目录
Go 语言(Golang)支持多种数据类型,这些类型大致可以分为几大类:基本类型、复合类型、引用类型以及其他一些特殊类型。下面详细介绍这些类型:
1. 基本类型
1.1 整型
整型包括有符号和无符号两种类型。
- 有符号整型:
int8
,int16
,int32
,int64
,int
(默认为机器字长,通常是 32 位或 64 位) - 无符号整型:
uint8
(也写作byte
)、uint16
,uint32
,uint64
,uint
(默认为机器字长,通常是 32 位或 64 位)
示例:
go
深色版本
1var i8 int8 = -128
2var u8 uint8 = 255
1.2 浮点型
浮点型用于表示带小数点的数值。
float32
float64
示例:
go
深色版本
1var f32 float32 = 3.14
2var f64 float64 = 3.141592653589793
1.3 复数类型
复数类型用于表示复数。
complex64
complex128
示例:
go
深色版本
1var c64 complex64 = 3 + 4i
2var c128 complex128 = 3.14 + 4.56i
1.4 字符串类型
字符串类型用于存储文本信息。
string
示例:
go
深色版本
1var str string = "Hello, world!"
1.5 布尔类型
布尔类型用于表示逻辑值。
bool
示例:
go
深色版本
1var trueVal bool = true
2var falseVal bool = false
2. 字符类型
字符类型用于存储单个字符。
rune
(等同于int32
,用于 Unicode 字符)byte
(等同于uint8
,通常用于 ASCII 字符)
示例:
go
深色版本
1var runeVal rune = '我'
2var byteVal byte = 'A'
3. 复合类型
复合类型是将多个元素组合成一个单一的值。
3.1 数组
数组是一种固定大小的序列类型。
示例:
go
深色版本
1var numbers [5]int = [5]int{1, 2, 3, 4, 5}
3.2 切片
切片是一种动态大小的序列类型。
示例:
go
深色版本
1var slice []int = []int{1, 2, 3, 4, 5}
3.3 映射(Map)
映射是一种键值对集合类型。
示例:
go
深色版本
1var mapVal map[string]int = map[string]int{"one": 1, "two": 2}
3.4 结构体
结构体是一种用户自定义的复合类型,用于组合不同类型的字段。
示例:
go
深色版本
1type person struct {
2 Name string
3 Age int
4}
5
6var p person = person{Name: "Alice", Age: 30}
4. 引用类型
引用类型是指向其他值的类型。
4.1 指针
指针用于存储另一个变量的内存地址。
示例:
go
深色版本
1var a int = 10
2var pa *int = &a
4.2 通道(Channel)
通道用于在 goroutines 之间传递消息。
示例:
go
深色版本
1ch := make(chan int)
2ch <- 42 // 发送数据
3fmt.Println(<-ch) // 接收数据
5. 其他类型
5.1 接口(Interface)
接口定义了一组方法签名,任何实现了这些方法的类型都可以满足该接口。
示例:
go
深色版本
1type Greeter interface {
2 Greet() string
3}
4
5type Person struct {
6 Name string
7}
8
9func (p Person) Greet() string {
10 return "Hello, " + p.Name
11}
12
13func main() {
14 var g Greeter = Person{Name: "Alice"}
15 fmt.Println(g.Greet())
16}
5.2 空接口(Empty Interface)
空接口可以接受任何类型。
示例:
go
深色版本
1var anyVar interface{} = "Hello"
2fmt.Println(anyVar)
总结
以上是 Go 语言中常见的数据类型及其基本使用方法。通过这些类型,可以构建出复杂的数据结构和逻辑,从而实现各种功能。每一种类型都有其特定的用途,理解它们的特性和使用场景对于编写高效、可维护的 Go 代码非常重要。