一、整型使用细节
- 分有符号和无符号,int unit 的大小和系统有关
var a int = 6 // 64 位操作系统 a 的符号为 int64
- 整型默认声明为int
var a = 100 // a 的类型为int
- byte 等价于int8,无符号,范围0-255,一般存储字符
- rune 等价于int32,有符号,表示一个Unicode码,处理带有中文的字符串
二、浮点数使用细节
- 有固定范围和字段长度,不受具体OS(操作系统)影响
- 整型默认声明为float64
var a = 0.34 // a 的类型为float64
- 浮点型常量有两种表示形式
十进制形式:如5.12 .512
科学计数法:5.1234e2 = 5.12*10的2次方 5.12E-2 = 5.12/10的2次方
三、字符类型使用细节
- 字符常量是用单引号''括起来的单个字符。例如:
var c1 byte = 'a'
var c2 int = '中'
- golang中字符本质是一个整数,直接输出时,是该字符对应的UTF-8编码的值
- 字符是可以计算的,相当于一个整数
var n1 = 10 + 'a' // 10 + 97 = 107
四、基本数据类型转换细节
- 在转换中,比如将int64 转成int8【-128---127】, 编译时不会报错,转换的结果是按溢出处理,和我们希望的结果不一致
var n1 int32 = 12
var n3 int8
var n4 int8
n3 = int8(n1) + 127 // 编译能通过,结果不是12 + 127,按溢出处理
n4 = int8(n1) + 128 // 编译通不过
fmt.Println(n4)
- 基本数据类型转string
// 用Sprintf (个人推荐)
var num1 int = 99
var str string
str = fmt.Sprintf("%d", num1)~~~~
// 用strconv 函数
var n1 int = 99
str = strconv.FormatInt(int64(num3), 10)
- string 数据类型转基本类型
var str string = "true"
var b bool
b, _ = strconv.ParseBool(str) // 会返回两个值,不想获取err,所有忽略
有疑问加站长微信联系(非本文作者)