Struct và interface
Go Methods: Value and Pointer Receivers
Go has no classes. Attach methods to a type and choose the right receiver.
Bạn sẽ học được gì
- Methods and receivers
- Value vs pointer receiver
- Constructor functions
Receiver → what the method can do
func (r Rectangle) Area()read a copyfunc (r *Rectangle) Scale(f)change the originalA function with a receiver
A method is a function with a receiver: the value it is called on, written before the method name. Go has no classes, so methods on structs are how types get behavior.
Area has a value receiver and works on a copy, which is fine for reading. Scale has a pointer receiver, so it changes the original rectangle. Go takes the address for you when you call rect.Scale(2). NewSquare is an ordinary function used as a constructor.
Những điểm quan trọng
- A value receiver works on a copy.
- A pointer receiver can change the original.
- NewSquare is a normal function used as a constructor.
Ví dụ Go chạy được
main.go
package main
import "fmt"
type Rectangle struct {
Width, Height float64
}
func NewSquare(size float64) Rectangle {
return Rectangle{Width: size, Height: size}
}
// Area has a value receiver: it only reads the rectangle.
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
// Scale has a pointer receiver: it changes the rectangle.
func (r *Rectangle) Scale(factor float64) {
r.Width *= factor
r.Height *= factor
}
func main() {
rect := Rectangle{Width: 3, Height: 4}
fmt.Println("area:", rect.Area())
rect.Scale(2)
fmt.Println("scaled:", rect.Width, "x", rect.Height, "=", rect.Area())
fmt.Println("square:", NewSquare(5).Area())
}
area: 12
scaled: 6 x 8 = 48
square: 25Luyện tập
Mở ví dụ trong trình biên dịch online, đổi một giá trị hoặc thêm một dòng, rồi đoán kết quả trước khi chạy. Sau đó cố ý làm code bị lỗi và đọc thông báo của trình biên dịch.
Bạn học xong bài này chưa?
Đánh dấu đã học để theo dõi tiến độ của bạn.
Tiến độ của bạn đang được lưu trong trình duyệt này Đăng nhập để giữ tiến độ trên mọi thiết bị.
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Quy tắc tài khoản ngân hàng Bảo vệ số dư tài khoản bằng các quy tắc nạp và rút tiền, từ chối các thao tác không hợp lệ. Dễ
- Distance Between Points Compute the straight-line distance between two points. Dễ