Menu
CoddyTech

Con trỏ đến struct

Thuộc phần Kiến thức nền tảng trong hành trình GO của Coddy. Bài học 97 trên 109.

Khi làm việc với các struct, bạn có thể tạo con trỏ đến chúng như với các kiểu dữ liệu khác. Cách này hữu ích để truyền các struct lớn một cách hiệu quả.

Định nghĩa một struct Person và tạo con trỏ trỏ đến nó:

type Person struct {
    name string
    age  int
}

func main() {
    person := Person{name: "Alice", age: 30}
    
    // Tạo con trỏ trỏ đến struct
    personPtr := &person
    
    // Truy cập các trường qua con trỏ
    fmt.Println(personPtr.name)
    fmt.Println(personPtr.age)
}

Kết quả đầu ra cho thấy ta có thể truy cập các trường thông qua con trỏ:

Alice
30

Bạn cũng có thể sửa đổi các trường thông qua con trỏ:

personPtr.age = 31
fmt.Println(person.age)  // In ra: 31
challenge icon

Thử thách

Người mới

Trong thử thách này, bạn sẽ luyện tập làm việc với con trỏ tới cấu trúc trong Go. Bạn có một cấu trúc Person với các trường name và age. Nhiệm vụ của bạn là cập nhật thông tin của người đó bằng con trỏ tới cấu trúc.

Code đã tạo sẵn một cấu trúc Person và một con trỏ tới cấu trúc đó. Bạn cần sửa đổi thông tin của người đó thông qua con trỏ.

Tự làm thử

package main

import "fmt"

// Struct Person có các trường name và age
type Person struct {
	name string
	age  int
}

func main() {
	// Tạo một struct Person
	person := Person{
		name: "John",
		age:  25,
	}

	// Tạo con trỏ trỏ đến struct Person
	personPtr := &person

	// In ra thông tin ban đầu của người này
	fmt.Println("Original person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)

	// TODO: Dùng con trỏ để đổi tên người này thành "Jane" và tuổi thành 30
	// Gợi ý: Bạn có thể truy cập các trường của struct qua con trỏ bằng cú pháp dấu chấm
	

	// In ra thông tin đã cập nhật của người này
	fmt.Println("Updated person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Go online