Cơ BảnGolang iconGolang

Pointer trong Go là gì? Khi nào dùng?

int là pointer type, &x lấy address, p dereference.

Go không có pointer arithmetic như C. nil pointer gây panic.

go
x := 42
p := &x      // p là *int, trỏ đến x
fmt.Println(*p) // 42 — dereference

*p = 100
fmt.Println(x)  // 100 — modify qua pointer

// Dùng pointer để modify tham số
func increment(n *int) {
    *n++
}
increment(&x)

// Pointer receiver — modify struct gốc
func (u *User) SetAge(age int) {
    u.Age = age
}

Dùng pointer khi:

  1. muốn modify giá trị gốc.
  2. struct lớn (tránh copy).
  3. method cần modify receiver

Xem toàn bộ Golang cùng filter theo level & chủ đề con.

Mở danh sách Golang