Menu
CoddyTech

声明指针变量

本课属于 Coddy GO 学习旅程的“基础知识”单元。第 61 课,共 109 课。

在 Go 中,你可以通过两种主要方式声明指针:使用带有指针类型的 var,或使用地址运算符和 :=。

使用 var 和指针类型声明一个指针:

func main() {
    var x int = 42
    var ptr *int    // 声明一个指向整数的指针
    ptr = &x        // 将 x 的地址赋给 ptr
    
    fmt.Println("Value of x:", x)
    fmt.Println("Value of ptr:", ptr)
    fmt.Println("Value at ptr:", *ptr)
}

输出显示,指针存储了 x 的地址:

Value of x: 42
Value of ptr: 0xc000018030
Value at ptr: 42

你也可以用一行代码声明并初始化指针,使用 :=:

y := 100
ptr := &y    // 一步完成指针的声明和初始化
challenge icon

挑战

入门

在这个挑战中,你将练习在 Go 中声明和使用指针。已经为你设置了一个指针,你的任务是创建一个指向同一值的新指针。

完成代码中的 TODO,声明一个名为 'secondPointer' 的新指针变量,让它指向与现有指针相同的内存地址。

亲手试试

package main

import "fmt"

func main() {
	// 这里有一个变量和一个指向它的指针
	originalValue := 42
	pointerToValue := &originalValue
	
	// TODO: 声明一个名为 'secondPointer' 的新指针变量 
	// 让它指向与 'pointerToValue' 相同的内存地址
	
	
	// 不要修改下面的代码
	fmt.Printf("Original value: %v\n", originalValue)
	fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
	fmt.Printf("Value through second pointer: %v\n", *secondPointer)
	
	// 我们来修改原始值,看看所有指针指向的值是否也随之变化
	originalValue = 100
	fmt.Printf("\nAfter changing original value to 100:\n")
	fmt.Printf("Original value: %v\n", originalValue)
	fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
	fmt.Printf("Value through second pointer: %v\n", *secondPointer)
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Go 在线编译器