Go语言指针与切片基础入门

0 下载量 77 浏览量 更新于2024-08-28 收藏 36KB PDF 举报
在Go语言的学习总结中,我们深入探讨了三个关键概念:指针、切片以及它们在程序中的应用。 1. **指针**: - 指针是Go语言中非常重要的概念,它是一个变量,保存了一个值的内存地址。在Go中,类型`*T`代表指向`T`类型值的指针,其中`nil`是所有指针类型的初始值,表示空或未分配的内存。 - `&`操作符用于获取一个变量的地址,返回一个指向该变量的指针。例如,在`p := &i`中,`p`指向变量`i`的内存地址。 - `*`操作符用于访问指针所指向的值。在`fmt.Println(*p)`中,我们实际上是打印了变量`i`的当前值,而在`*p = 21`这行,我们通过指针改变了`i`的值。 - 示例代码展示了如何使用指针对变量进行读取和修改,以及指针地址的表示。 2. **切片**: - 切片在Go中是一种特殊的引用,它并不存储实际的数据,而是存储了一个指向底层数据结构(如数组)的指针,以及两个索引(开始和结束索引),定义了引用的数据范围。切片不复制数据,所以更改切片的元素会直接反映在底层数据上。 - 在`names`的例子中,我们创建了两个切片`a`和`b`,分别引用了原数组的不同部分。当我们在`b`中修改元素时,`a`也受到影响,体现了切片的共享特性。 - Go提供了多种方式来创建切片,包括基于数组的切片(如`s1 := s[1:4]`)、全量复制的切片(如`s2 := s[:2]`)以及从现有切片开始的切片(如`s3 := s[1:]`)。 Go语言的指针和切片是两种强大的工具,它们有助于优化内存管理,提高代码的效率和灵活性。掌握指针可以让你更深入地理解程序的内存布局,而理解切片的工作原理则有助于编写更高效和易维护的代码。通过这两个概念,程序员可以更好地处理数组和其他数据结构,并在Go的并发编程中发挥重要作用。