Golang is a simple and powerful programming language that provides a rich method set for operating objects. A method set is a collection of methods that can be called on a value of a specific type.
Golang’s method set consists of the following types:
Value type method set represents all values belonging to this type collection of methods. Value types include basic types (int, float, string, etc.) and custom types (struct, array, slice, map, etc.). Taking struct as an example, all fields in the structure will be included in the value type method set. When a method is called on a struct, a copy of this value is made and operated on.
The following is an example:
type Person struct { Name string Age int } func (p Person) SayHello() { fmt.Println("Hello, my name is", p.Name, "and I am", p.Age, "years old.") } func main() { p := Person{Name: "John", Age: 30} p.SayHello() // 输出:Hello, my name is John and I am 30 years old. }
Pointer type method set represents the collection of all methods belonging to this type of pointer. Unlike value types, pointer types include all methods that have pointer receivers. The function of the pointer type method set is to operate on the original object.
The following is an example:
type Rect struct { Width int Height int } func (r *Rect) Area() int { return r.Width * r.Height } func main() { r := &Rect{Width: 10, Height: 5} fmt.Println(r.Area()) // 输出:50 }
When a type has both a value type method set and a pointer type method set, it has two different method sets. This type is often called the receiver type. Since this type supports both value and pointer receivers, it can be called on either a value or a pointer.
The following is an example:
type Counter struct { Value int } func (c Counter) Increment() { c.Value++ } func (c *Counter) Decrement() { c.Value-- } func main() { c1 := Counter{Value: 0} c1.Increment() fmt.Println(c1.Value) // 输出:0 c2 := &Counter{Value: 0} c2.Decrement() fmt.Println(c2.Value) // 输出:-1 }
In the above example, you can add an increment method through the value type receiver and add a decrement method through the pointer type receiver. When the increment method is called on a value, only the copy of the variable is changed, not the original variable. When the decrement method is called on a pointer, the original variable will be modified.
In general, Golang's method set provides a simple and powerful way to deal with objects. It makes performing operations on objects easier and more intuitive, and effectively avoids duplication of code. For beginners, it is very important to understand the ideas behind method sets, which will help to better understand the basic principles of the Golang programming language.
The above is the detailed content of golang method set. For more information, please follow other related articles on the PHP Chinese website!