基本数据类型 - 图3

基本类型

布尔类型

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

  1. var b bool = true

image.png

字符串类型

字符串就是一串固定长度的字符连接起来的字符序列。Go语言的编码统一为 UTF-8。

  1. var s string = "abc"

image.png

  1. 反引号、飘号 ``

image.png

数字类型

  1. 整型
  2. int8 int16 int32 int64 x位整数
  3. uint8 uint16 uint32 uint64 无符号x位整数
  4. 浮点型
  5. float32 float64
  6. complex64 complex128
  7. 其他数字类型
  8. byte // 类似 uint8
  9. rune // rune 类似 int32 表示一个 Unicode 码点
  10. int uint //int, uint 和 uintptr 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽。
  11. //当你需要一个整数值时应使用 int 类型,除非你有特殊的理由使用固定大小或无符号的整数类型。
  12. 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
image.png

浮点型

  1. 需要保留高精度,优先使用float64
  2. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/22899296/1634108656623-f6563d80-373f-4544-b06f-6bdb0c7facd9.png#clientId=u0be54461-543c-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=129&id=uc5a4a673&margin=%5Bobject%20Object%5D&name=image.png&originHeight=163&originWidth=751&originalType=binary&ratio=1&rotation=0&showTitle=false&size=71167&status=done&style=none&taskId=u845ed31e-8c11-4346-b627-525d39bc02d&title=&width=594.5)

字符型

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/22899296/1634108697852-bcc01b21-b17a-4b0a-b87e-6b776c5cb89a.png#clientId=u0be54461-543c-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=375&id=u551ecc26&margin=%5Bobject%20Object%5D&name=image.png&originHeight=567&originWidth=884&originalType=binary&ratio=1&rotation=0&showTitle=false&size=425247&status=done&style=none&taskId=ude1b2ea7-166c-4abe-8054-f121d931c01&title=&width=584)

默认零值

image.png

类型转换

基本数据类型之间转换

  1. // 高精度 =》低精度 或者 低精度=》高精度 都要显示转换
  2. // 高精度 =》低精度, 溢出不会报错
  3. var i int32 = 100
  4. var j int32 = 55555
  5. // i => float
  6. var f1 = float32(i)
  7. // int32 => int8
  8. var i2 = int8(i)
  9. var i3 = int8(j)
  10. fmt.Println(f1,i2,i3)
  11. //输出 100 100 3

image.png

基本数据类型 =》 string

方式一 fmt.Sprintf(“%参数”,表达式) (推荐方式)
golang标准库

  1. var num1 int = 99
  2. var num2 float64 = 4.5
  3. var b bool = true
  4. var mychar byte = 'h'
  5. //第一种方式转换
  6. str := fmt.Sprintf("%d",num1)
  7. fmt.Printf("str type:%T str = %v\n",str,str)
  8. str = fmt.Sprintf("%f",num2)
  9. fmt.Printf("str type:%T str = %v\n",str,str)
  10. str = fmt.Sprintf("%t",b)
  11. fmt.Printf("str type:%T str = %v\n",str,str)
  12. str = fmt.Sprintf("%c",mychar)
  13. fmt.Printf("str type:%T str = %v\n",str,str)

image.png

方式二 使用strconv包的函数

  1. var num1 int = 99
  2. var num2 float64 = 4.5
  3. var b bool = true
  4. //第二种方式转换
  5. str := strconv.FormatInt(int64(num1),10)
  6. fmt.Printf("str type:%T \t str value=%v\n",str,str)
  7. str = strconv.FormatFloat(num2,'f',10 , 64)
  8. fmt.Printf("str type:%T \t str value=%v\n",str,str)
  9. str = strconv.FormatBool(b)
  10. fmt.Printf("str type:%T \t str value=%v\n",str,str)
  11. str = strconv.Itoa(num1) //简单方便
  12. fmt.Printf("str type:%T \t str value=%v\n",str,str)

image.png

string =》 基本数据类型

使用strconv包的函数

  1. // bool
  2. var str string = "true"
  3. var b bool
  4. b , _ = strconv.ParseBool(str)
  5. fmt.Printf("type %T \t %v\n",b,b)
  6. //int
  7. var str1 = "12345860"
  8. var n1 int64
  9. n1,_ = strconv.ParseInt(str1,10,64)
  10. fmt.Printf("type %T \t %v\n",n1,n1)
  11. //float
  12. var str2 = "123.456"
  13. var f1 float64
  14. f1,_= strconv.ParseFloat(str2,64)
  15. fmt.Printf("type %T \t %v\n",f1,f1)

image.png

string转换基本数据类型时要确保string为有效数据,无法转换则会转换为基本类型的默认值。

  1. // bool
  2. var str string = "ddddd"
  3. var b bool
  4. b , _ = strconv.ParseBool(str)
  5. fmt.Printf("type %T \t %v\n",b,b)
  6. // 输出 false