基本类型
布尔类型
布尔型的值只可以是常量 true 或者 false。默认值为false,占用一个字节,通常用于程序流程控制
var b bool = true

字符串类型
字符串就是一串固定长度的字符连接起来的字符序列。Go语言的编码统一为 UTF-8。
var s string = "abc"

反引号、飘号 ``
数字类型
整型int8 int16 int32 int64 x位整数uint8 uint16 uint32 uint64 无符号x位整数浮点型float32 float64complex64 complex128其他数字类型byte // 类似 uint8rune // rune 类似 int32 表示一个 Unicode 码点int uint //int, uint 和 uintptr 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽。//当你需要一个整数值时应使用 int 类型,除非你有特殊的理由使用固定大小或无符号的整数类型。uintptr //uintptr 无符号整型,用于存放一个指针
| 整型 | |
|---|---|
| 1 | uint8 无符号 8 位整型 (0 到 255) |
| 2 | uint16 无符号 16 位整型 (0 到 65535) |
| 3 | uint32 无符号 32 位整型 (0 到 4294967295) |
| 4 | uint64 无符号 64 位整型 (0 到 18446744073709551615) |
| 5 | int8 有符号 8 位整型 (-128 到 127) |
| 6 | int16 有符号 16 位整型 (-32768 到 32767) |
| 7 | int32 有符号 32 位整型 (-2147483648 到 2147483647) |
| 8 | int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
| 浮点型 | |
|---|---|
| 1 | float32 IEEE-754 32位浮点型数 |
| 2 | float64 IEEE-754 64位浮点型数 |
| 3 | complex64 32 位实数和虚数 |
| 4 | complex128 64 位实数和虚数 |
| 其他数字类型 | |
|---|---|
| 1 | byte 类似 uint8 |
| 2 | rune 类似 int32 |
| 3 | uint 32 或 64 位 |
| 4 | int 与 uint 一样大小 |
| 5 | uintptr 无符号整型,用于存放一个指针 |
数字类型细节
整型
默认int64

浮点型
需要保留高精度,优先使用float64
字符型

默认零值
类型转换
基本数据类型之间转换
// 高精度 =》低精度 或者 低精度=》高精度 都要显示转换// 高精度 =》低精度, 溢出不会报错var i int32 = 100var j int32 = 55555// i => floatvar f1 = float32(i)// int32 => int8var i2 = int8(i)var i3 = int8(j)fmt.Println(f1,i2,i3)//输出 100 100 3

基本数据类型 =》 string
方式一 fmt.Sprintf(“%参数”,表达式) (推荐方式)
golang标准库
var num1 int = 99var num2 float64 = 4.5var b bool = truevar mychar byte = 'h'//第一种方式转换str := fmt.Sprintf("%d",num1)fmt.Printf("str type:%T str = %v\n",str,str)str = fmt.Sprintf("%f",num2)fmt.Printf("str type:%T str = %v\n",str,str)str = fmt.Sprintf("%t",b)fmt.Printf("str type:%T str = %v\n",str,str)str = fmt.Sprintf("%c",mychar)fmt.Printf("str type:%T str = %v\n",str,str)

方式二 使用strconv包的函数
var num1 int = 99var num2 float64 = 4.5var b bool = true//第二种方式转换str := strconv.FormatInt(int64(num1),10)fmt.Printf("str type:%T \t str value=%v\n",str,str)str = strconv.FormatFloat(num2,'f',10 , 64)fmt.Printf("str type:%T \t str value=%v\n",str,str)str = strconv.FormatBool(b)fmt.Printf("str type:%T \t str value=%v\n",str,str)str = strconv.Itoa(num1) //简单方便fmt.Printf("str type:%T \t str value=%v\n",str,str)

string =》 基本数据类型
使用strconv包的函数
// boolvar str string = "true"var b boolb , _ = strconv.ParseBool(str)fmt.Printf("type %T \t %v\n",b,b)//intvar str1 = "12345860"var n1 int64n1,_ = strconv.ParseInt(str1,10,64)fmt.Printf("type %T \t %v\n",n1,n1)//floatvar str2 = "123.456"var f1 float64f1,_= strconv.ParseFloat(str2,64)fmt.Printf("type %T \t %v\n",f1,f1)

string转换基本数据类型时,要确保string为有效数据,无法转换则会转换为基本类型的默认值。
// boolvar str string = "ddddd"var b boolb , _ = strconv.ParseBool(str)fmt.Printf("type %T \t %v\n",b,b)// 输出 false


