基本类型
- 布尔型:bool
- 长度:1位
- 取值范围:true - false
- 注意事项:不可以用数字表示
- 整形:int
- 根据平台不同可以为32或4位
- 细分类型:int8、int16、int32、int64
- 取值范围:-128 ~ 127、-32768 ~ 32767、-2^32 / 2 ~ 2^32 / 2 - 1、-2^64 / 2 ~ 2^64 / 2 - 1
- 无符号整形: uint
- 根据平台不同可以为32或4位
- 细分类型:uint8、uint16、uint32、uint64
- 取值范围:0 ~ 255、0 ~ 65535、0 ~ 2^33 - 1、0 ~ 2^65 - 1
- 字节型:byte(uint8的别名)
- 浮点型:float32 / float64
- 长度:4/8字节
- 小数位:精确到7/15小数位
- 复数型:complex64/complex128
- 长度:8/16字节
- 指针型:uintptr
- 足够保存指针的32或64位整形
- 其他值类型:
- 数组(array)
- 结构(struct)
- 字符串(string)
- 引用类型(非传统引用):
- 切片(slice)
- 类哈希表(map)
- 管道(chan)
- 接口型(interface)
- 函数型(func)
类型零值
零值并不等价于空值(NULL),是指在变量被声明为某种类型之后自动获得的默认值。
int -> 0
bool -> false
float64 -> 0.0
string -> ""(空字符串)
结构 -> 空结构
引用类型 -> nil(空指针)
类型别名
- 类型别名可以为某个类型赋予新的合法名称
- 类型别名并不是单纯的重命名或指向,而是用源类型作为底层类型,定义了一个全新的类型
- 新类型与源类型之间需要类型转换,属于相互兼容的类型
- 新类型可以拥有属于自己的一套方法
- 新类型不会继承源类型的方法,而需要进行类型转换后才可以调用
示例:
package main
import "fmt"
type 别名 bool
func main() {
var a 别名
fmt.Println(a)
}