整型
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)
- uint8即是的byte型
- int16对应C语言中的short型
- int64对应C语言中的long型
- uint和int:具体是32位还是64位看操作系统:操作系统上就是uint32/int32,64位操作系统上就是uint64/int64
- uintptr:表示指针;无符号整型,用于存放一个指针
浮点型
- Go支持两种浮点型数:float32和float64,这两种浮点型数据格式遵循IEEE 754标准
- float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32。
- float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64。
- 默认是float64
复数
- 有两种complex64、complex128(科学运算会用到)
- 复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位。
布尔值
- true、false
- 默认值为false
- go中布尔值无法与其他类型进行转换
字符串
s := "hello/wzb"
fmt.Println(len(s))
ret := strings.Split(s, "/")
fmt.Println(ret)
fmt.Printf("%T\n", ret)
fmt.Println(strings.Contains(s, "wzb"))
fmt.Println(strings.HasPrefix(s, "h"))
fmt.Println(strings.HasSuffix(s, "h"))
sIndex := "adfadfwett"
fmt.Println(strings.Index(sIndex, "a"))
fmt.Println(strings.Join(ret, "+"))
strRune := "hello铁柱你好안녕하세요."
for _, c := range strRune {
fmt.Printf("%c\n", c)
}
s1 := "黑猫"
s2 := []rune(s1)
s2[0] = '白'
fmt.Println(s2)
fmt.Println(string(s2))
- 使用UTF-8编码
- 字符串的值为双引号("“)中的内容,单引号(‘’)中表示字符,通过遍历或者单个获取字符串元素获得字符
- 当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。
- 字符串底层是一个byte数组,所以可以和[]byte类型相互转换
- 字符串不能修改的,除非先将其转换成[]rune或[]byte,完成后再转换为string
- 由于字符串是由byte字节组成,所以字符串的长度是byte字节的长度
- rune类型用来表示utf8字符,一个rune字符由一个或多个byte组成。所以在遍历中文或者其他复合字符时得使用range,不能使用len来for遍历