数据类型
布尔型 bool
数字类型(有符号整型) int int8 int16 int32 int64
数字类型(无符号整型) uint uint8 uint16 uint32 uint64
浮点型 float32 float64 complex64 complex128
其他数字类型 byte(类似uint8) rune(类似 int32) uintptr(无符号整型,用于存放一个指针)
字符串类型 string
派生类型:
包括:
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
注意⚠️:Go语言对于类型转换是非常严苛的
Go语言不支持隐式类型转换
func TestType(t *testing.T) {
var a int32 = 1
var b int8
b = a
}
编译以上代码报错如下
cannot use a (type int32) as type int8 in assignment
别名到原有类型也不支持隐式类型转换
type Myint int64
func TestType(t *testing.T) {
var a int32 = 1
var c Myint
c = a
}
//编译以上代码报错如下
cannot use a (type int32) as type Myint in assignment
func TestType(t *testing.T) {
var a int32 = 1
var b int8
b = int8(a)
t.Log(b)
}
Go语言不支持指针运算
func TestPoint(t *testing.T) {
//a 是一个字符串
a := "hello"
//aPtr是一个指针,内存单元编号
aPtr := &a
//输出 hello 0xc00008e4e0
t.Log(a, aPtr)
//输出类型 a变量是string类型 aPtr 是 *string
t.Logf("%T %T", a, aPtr)
// 编译报错,go语言不支持指针计算
aPtr = aPtr + 1
}