整型
整型分为以下两个大类:按长度分为:int8, int16, int32, int64; 对应无符号整型 uint8, uint16, uint32m uint64
类型 | 描述 |
uint8 | 无符号8位整型 0 - 255 |
uint16 | 无符号16位整型 0 - 65535 |
uint32 | 无符号32位整型 0 - 4294967295 |
uint64 | 无符号64位整型 0 - 18446744073709551615 |
int8 | 有符号8位整型 -128 - 127 |
int16 | 有符号16位整型 -32768 - 32767 |
int32 | 有符号32位整型 -2147483648 - 2147483647 |
int64 | 有符号64位整型 -9223372036854775808 - 9223372036854775807 |
特殊整型
类型 | 描述 |
uint | 32操作系统上是 uint32,64位操作系统上是 uint64 |
int | 32操作系统上是 int32,64位操作系统上是 int64 |
uintptr | 无符号类型,用于存放一个指针 |
fmt.Printf("%d\n", i1) //十进制
fmt.Printf("%b\n", i1) //二进制
fmt.Printf("%o", i1) //8进制 文件权限
fmt.Printf("%x\n", i1) //16进制 内存地址
fmt.Printf("%T\n", i1) //产看变量类型
浮点数
两种 float32, float64
未指定的默认为 float32
f1 := 1.2345
f2 := float32(1.234)
f1 = f2 //错误,类型不一致,f1 为 float64
布尔值
bool
只有 true
和 false
- 默认为 false
- 不允许其他类型强制转换为布尔值
- 无法参与数值运算,也无法与其他类型镜像转换
字符串
utf8 编码,只能用"
双引号包裹
单引号只能包裹单独的字符
'a'
,'1'
,'你'
多行字符串 用反引号 ` 包裹,反引号中内容原样输出包括换行,转义字符等
str := `
hello
moto
\c\mnt\code
`
字符串相关操作
- 长度
len(str)
- 拼接
+
或者fmt.Sprintf("%s and %s", "a", "b")
或者bytes.Buffer
类型 的WriteString
方法(最合理?) - 分割
strings.Split("hello world", " ")
返回字符串 - 包含
strings.Contains("hello words", "hello")
返回布尔值 - 前缀/后缀 判断 `
strings.HasPrefix("filename", "file")
strings.HasSuffix("filename", "name")
- 子字符串出现位置 / 最后出现位置
strings.Index("apple", "pp")
strings.LastIndex("apple", "p")
- join 拼接
strings.Join(strings.Split("hello world", " "), "+")