go lang学习笔记 8 - 基本数据类型
1455
|
2021-12-24 11:22:00
整型
整型分为以下两个大类:按长度分为: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", " "), "+")