Go语言复合类型深度解析

0 下载量 73 浏览量 更新于2024-09-01 收藏 85KB PDF 举报
"本资源主要涵盖了GO语言的复合类型,包括结构体、指针类型、数组和切片以及映射类型。通过学习,读者将能够深入理解这些概念,并掌握如何在Go语言中使用它们。" 在GO语言中,复合类型是编程中不可或缺的一部分,它们允许我们创建更复杂的自定义数据结构。本专题首先介绍了指针类型,指针不存储实际的数据,而是存储数据的内存地址。使用`&`运算符可以获取变量的内存地址,而`*`运算符则用于访问存储在该地址的值。例如: ```go a := 3 pa := &a // 获取a的地址 fmt.Println("point", a, *pa) // 访问指向的内存 ``` 当只声明未赋值的指针时,其值为`nil`,表示空指针。 接下来,文章讲解了结构体(struct),这是Go语言中的一种聚合数据类型,可以包含多个不同类型的数据成员。结构体的定义如下: ```go type Test struct { a int b int } ``` 结构体的初始化有多种方式:可以直接初始化所有字段,部分初始化,或者隐式初始化为零值。例如: ```go test := Test{1, 2} // 初始化所有字段 t2 := Test{a: 3} // 只初始化a,b默认为0 t3 := Test{} // 隐式初始化所有字段为0 ``` 此外,可以同时声明和初始化多个结构体变量,包括指针类型: ```go var ( t1 = Test{8, 6} t2 = Test{a: 3} // 指定赋值Test.a,Test.b隐式赋值0 t3 = Test{} // .a.b都隐式赋值0 pt4 = &Test{8, 6} // 结构体指针 ) ``` 访问结构体成员使用`.`运算符,无论结构体变量还是结构体指针,都可以直接访问: ```go fmt.Println("stru", t1.a, t1.b) ``` 数组在Go语言中是固定大小的,一旦声明长度就不可更改。切片(slice)则是数组的动态视图,可以增长和收缩。映射(map)提供了键值对的存储,类似于其他语言中的字典或哈希表。 数组的声明通常包括元素类型和长度,如`var arr [5]int`。切片可以通过`make`函数创建,或从数组创建,如`s := arr[:3]`。映射的声明和初始化可以这样进行: ```go m := make(map[string]int) m["key"] = 123 ``` 通过以上内容,读者将对Go语言的复合类型有一个全面的了解,包括如何定义、初始化和操作这些类型,从而更好地在实际项目中运用Go语言。