Menu
CoddyTech

指向结构体的指针

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

使用结构体时,你可以像处理其他类型一样创建指向它们的指针。这有助于高效地传递大型结构体。

定义一个 Person 结构体,并创建指向它的指针:

type Person struct {
    name string
    age  int
}

func main() {
    person := Person{name: "Alice", age: 30}
    
    // 创建一个指向结构体的指针
    personPtr := &person
    
    // 通过指针访问字段
    fmt.Println(personPtr.name)
    fmt.Println(personPtr.age)
}

输出表明,我们可以通过指针访问字段:

Alice
30

你也可以通过指针修改字段:

personPtr.age = 31
fmt.Println(person.age)  // 输出:31
challenge icon

挑战

入门

在这个挑战中,你将练习在 Go 中使用指向结构体的指针。你有一个 Person 结构体,其中包含 name 和 age 字段。你的任务是使用指向该结构体的指针更新这个人的信息。

代码已经创建了一个 Person 结构体和一个指向它的指针。你需要通过这个指针修改这个人的信息。

亲手试试

package main

import "fmt"

// 包含 name 和 age 字段的 Person 结构体
type Person struct {
	name string
	age  int
}

func main() {
	// 创建一个 Person 结构体
	person := Person{
		name: "John",
		age:  25,
	}

	// 创建一个指向 Person 结构体的指针
	personPtr := &person

	// 打印修改前的人员信息
	fmt.Println("Original person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)

	// TODO: 用指针将此人的名字改为 "Jane",年龄改为 30
	// 提示:你可以用点号通过指针访问结构体字段
	

	// 打印更新后的人员信息
	fmt.Println("Updated person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}
quiz icon自我测试

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

基础知识中的所有课

自己练习: Go 在线编译器