基本类型
布尔类型
布尔型的值只可以是常量 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 float64
complex64 complex128
其他数字类型
byte // 类似 uint8
rune // 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 = 100
var j int32 = 55555
// i => float
var f1 = float32(i)
// int32 => int8
var i2 = int8(i)
var i3 = int8(j)
fmt.Println(f1,i2,i3)
//输出 100 100 3
基本数据类型 =》 string
方式一 fmt.Sprintf(“%参数”,表达式) (推荐方式)
golang标准库
var num1 int = 99
var num2 float64 = 4.5
var b bool = true
var 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 = 99
var num2 float64 = 4.5
var 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包的函数
// bool
var str string = "true"
var b bool
b , _ = strconv.ParseBool(str)
fmt.Printf("type %T \t %v\n",b,b)
//int
var str1 = "12345860"
var n1 int64
n1,_ = strconv.ParseInt(str1,10,64)
fmt.Printf("type %T \t %v\n",n1,n1)
//float
var str2 = "123.456"
var f1 float64
f1,_= strconv.ParseFloat(str2,64)
fmt.Printf("type %T \t %v\n",f1,f1)
string转换基本数据类型时,要确保string为有效数据,无法转换则会转换为基本类型的默认值。
// bool
var str string = "ddddd"
var b bool
b , _ = strconv.ParseBool(str)
fmt.Printf("type %T \t %v\n",b,b)
// 输出 false