下面将对这些类型进行详细说明:
一、基本数据类型
-
布尔型 (bool):表示逻辑值,仅有两个可选值
true
或false
。var isTrue bool = true var isFalse bool = false
-
整数型:
- 有符号整数:int8、int16、int32(通常对应C中的short)、int64(通常对应C中的long long)。
- 无符号整数:uint8(等同于byte)、uint16、uint32、uint64。
var i int8 = -128 // 最小值为-128,最大值为127 var u uint32 = 4294967295 // 最大值为 2^32 - 1
-
浮点型:
- float32:32位IEEE-754浮点数。
- float64:64位IEEE-754浮点数,这是Go中默认的浮点数类型。
var f float32 = 3.14159265 // 浮点数 var pi float64 = math.Pi // 使用math库中的π常数
-
复数型:
- complex64:由两个32位浮点数(实部和虚部)组成。
- complex128:由两个64位浮点数组成。
var c complex64 = 3 + 4i // 复数
-
字符串 (string):不可变的字符序列,使用UTF-8编码。
var s string = "Hello, World!" // 字符串
二、复合数据类型
-
数组 (array):固定长度的同类型元素集合,其长度在声明时必须确定。
var a [5]int // 声明一个包含5个整数的数组
-
切片 (slice):动态大小的、灵活的数组视图,它不拥有底层数据,而是指向底层数组的一个片段。
var s []int = make([]int, 0, 5) // 创建一个初始长度为0,容量为5的整数切片
-
结构体 (struct):用户自定义的数据类型,可以包含多个成员,每个成员可以是不同类型的变量。
type Person struct { Name string Age int } var p Person p.Name = "Alice" p.Age = 30
-
接口 (interface):定义了一组方法签名,任何实现了这些方法的类型都实现了该接口。
type Writer interface { Write(p []byte) (n int, err error) } type MyWriter struct {} func (w MyWriter) Write(p []byte) (n int, err error) { ... }
三、引用类型
-
指针 (pointer):存储变量内存地址的类型,允许直接操作内存中的值。
var x int = 10 var p *int = &x // 指针p指向变量x的地址 *p = 20 // 通过指针修改x的值
-
函数类型 (function type):可以像其他任何类型一样声明和赋值,允许作为参数传递或从函数返回。
func add(a, b int) int { return a + b } var myFunc func(int, int) int = add
-
通道 (channel):用于并发编程的通信机制,用于goroutine之间的同步和数据传输。
ch := make(chan int) // 创建一个int类型的通道 go func() { ch <- 42 // 向通道发送一个值 }() value := <-ch // 从通道接收一个值
-
映射 (map):关联键值对的数据结构,键和值可以是任意类型。
m := make(map[string]int) m["apple"] = 10
-
错误类型 (error):虽然不是内置类型,但error是一种广泛使用的接口类型,用于表示运行时错误。
四、特殊类型
- 空接口 (interface{}):不包含任何方法的接口,它可以容纳任何类型的值。
以上是对Go语言主要数据类型的详解。通过这些类型,开发者可以在Go程序中构建复杂的抽象,并实现高效的内存管理和类型安全。
小结
数据类型需要通过实际应用来深入掌握。在后续内容中将逐步展开。