在Go语言中,基本类型包括数字类型、布尔类型、字符串类型和错误类型。派生类型是基于基本类型或其他派生类型定义的类型,包括指针类型、数组类型、切片类型、字典类型、通道类型、结构体类型、接口类型和函数类型。
下面分别介绍一下这些类型:
- 数字类型:包括整数类型(int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64、uintptr)、浮点数类型(float32、float64)和复数类型(complex64、complex128)。
- 布尔类型:只有两个取值true和false,用于表示逻辑值。
- 字符串类型:用于表示文本字符串,底层为UTF-8编码。
- 错误类型:用于表示程序运行过程中可能出现的错误信息。
- 指针类型:指向其他变量的内存地址,可以用来间接访问变量的值。
- 数组类型:一组具有相同类型的数据元素的集合,长度固定。
- 切片类型:动态数组,可以根据需要进行扩展或收缩。
- 字典类型:无序的键值对集合。
- 通道类型:用于在goroutine之间传递数据的通信机制。
- 结构体类型:由一组具有不同类型的数据字段组成的自定义类型。
- 接口类型:定义了一组方法的集合,实现接口的类型必须实现这些方法。
- 函数类型:用于表示函数的类型,包括参数和返回值类型。
示例代码:
// 数字类型 var i int = 10 var f float64 = 3.14 var c complex64 = 1 2i
// 布尔类型 var b bool = true
// 字符串类型 var s string = "hello, world"
// 错误类型 err := errors.New("an error occurred")
// 指针类型 var ptr *int = &i
// 数组类型 var arr [3]int = [3]int{1, 2, 3}
// 切片类型 var slice []int = []int{1, 2, 3}
// 字典类型 var dict map[string]int = map[string]int{"one": 1, "two": 2, "three": 3}
// 通道类型 var ch chan int = make(chan int)
// 结构体类型 type person struct { name string age int } var p person = person{name: "Bob", age: 30}
// 接口类型 type MyInterface interface { Method1() Method2() }
// 函数类型 func add(a, b int) int { return a b } var f func(int, int) int = add