与其他语言的差异:
* Go 语⾔不允许隐式类型转换
* 别名和原有类型也不能进⾏隐式类型转换
## 整型
~~~
uint8 无符号 8位整型 0~255 # unit8
uint6 无符号16位整型 0~65535
uint32 无符号32位整型
uint64 无符号64位整型
#------------------------------------
uint8 8位整型 0~255
uint16 16位整型 0~65535
uint32 32位整型 # rune
uint64 64位整型
uint int 32位或者64位取决于操作系统
~~~
### 类型的预定义值
```go
math.MaxInt64
math.MaxUint64
math.MaxFloat64
```
## 浮点数和复数
~~~
float32 32位浮点型
float64 64位浮点型
complex32 32位浮点型
complex64 64位浮点型
~~~
## 字符串
### 字符串的底层布局
![](https://box.kancloud.cn/8ba2ca6ba2bddb322a7d645a86f7611d_1076x634.png)
### 字符串更改
```
s := "你好 world!"
s1 := []byte(s)
s1[0] = 'h'
s1[1] = 'i'
str = string(s)
fmt.Println(str)
```
~~~
// 字符 byte,单引号
var ch byte
ch = 'a'
fmt.Print("ch =", ch)
// 字符串 string 以'\0'结尾
var str string
str = "abc"
fmt.Print("str = ", str)
~~~
## 布尔型 bool
~~~
true false
~~~
## 字节型 byte
## 类型零值
类型零值是指变量被声明后的默认值,值类型默认为0,布尔类型默认为false,string默认为空字符串""。
## 类型存储大小
![](https://box.kancloud.cn/3afb0a13ac8d7b9bc7f401b993b9b321_1271x592.png)