什么是指针
Coddy Golang 中的函数和指针 课程的第 2 课,共 19 课。
我们首先要回答的问题是,什么是指针?我们已经学习过变量,并把变量定义为存储值的盒子。而指针是存储地址而不是值的盒子。
在任何编程语言中创建变量时,这个变量都会存储在内存中,而内存中的每个空间都有一个地址。例如,如果我们这样定义一个变量:
var name = "Coddy"我们可以这样表示它在内存中的情况:
要从内存中获取任何值,我们都需要一个地址。因此,地址会告诉我们这个空间在内存中的位置。
而指针是一个存储内存地址而不是值的盒子。这就是我们称它为指针的原因,因为它指向一个内存地址。
定义指针的语法如下:
var name = "Coddy"
namePointer := &name这里,我们定义了一个名为 namePointer 的指针,并用 & 指向变量 name 的地址。
我们也可以像这样定义一个初始值为 nil 的新指针:
var coddy *string这个语法中的 * 会创建一个名为 coddy、类型为 string 的新指针,而指针的初始值是 nil。
要打印指针中存储的地址,只需像这样传入指针的名称:
fmt.Println(coddy)要打印指针地址中存储的值,可以使用星号 *:
fmt.Println(*coddy)挑战
简单- 声明一个名为 a、值为 200 的变量。
- 声明一个名为 aPointer、类型为 int 的新指针。
- 将变量 a 的地址赋给指针 aPointer。
- 打印指针 aPointer 和变量 a 的值。
亲手试试
package main
import "fmt"
func main() {
// 声明一个名为 a 的变量,值为 200。
// 声明一个新的 int 类型指针,名为 aPointer。
// 将变量 a 的地址赋给指针 aPointer。
// 打印指针 aPointer 和变量 a 的值。
fmt.Println("the value of the pointer:",?)
fmt.Println("the value of the variable :",?)
}Golang 中的函数和指针中的所有课
自己练习: Go 在线编译器