整型

整型分为以下两个大类:按长度分为: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

特殊整型

类型描述
uint32操作系统上是 uint32,64位操作系统上是 uint64
int32操作系统上是 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 只有 truefalse

  1. 默认为 false
  2. 不允许其他类型强制转换为布尔值
  3. 无法参与数值运算,也无法与其他类型镜像转换

 

字符串

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", " "), "+")