Trung BìnhGolang iconGolang

Pointer receiver vs value receiver khác nhau?

Hai dạng receiver có ngữ nghĩa khác nhau về copy và mutation:

  • Value receiver func (u User) Name() — nhận một copy của struct, không thể modify giá trị gốc.
  • Pointer receiver func (u *User) SetName(n string) — modify trực tiếp struct gốc, không tốn chi phí copy.

Dùng pointer receiver khi: cần mutate state, struct lớn (tránh copy), hoặc để giữ consistency — nếu một method dùng pointer thì tất cả method của type đó nên dùng pointer.

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

Mở danh sách Golang