Home > Article > Backend Development > Detailed explanation of the similarities and differences between methods and functions in Go language
In Go, methods are related to types and can be called through type name.method name to modify the receiver value; while functions are independent of types and can be called directly through function names. The difference between methods and functions: methods are related to types, and functions are independent of types. Methods are called through type name.method name, and functions are called directly through function names. Methods can modify the receiver value, but functions cannot.
In Go language, methods and functions are code blocks, used for Perform specific tasks. However, there are some key differences between them.
Methods are associated with a specific type. They are members of the value of that type and can therefore be called using the type name followed by a dot.
type Person struct { name string } func (p Person) Greet() { fmt.Println("Hello, my name is", p.name) }
In the above example, Greet
is a method
of type Person
, which can be accessed through p.Greet()
transfer.
Function is a type-independent block of code. They are defined using the func
keyword and can be called directly by their function name.
func Greet(name string) { fmt.Println("Hello,", name) }
In the above example, Greet
is a function
that is called via Greet("John")
, where "John"
is passed as a parameter.
Features | Method | Function |
---|---|---|
##Associated type | Related to a specific typeIndependent of type | |
Calling syntax | Type name.Method nameFunction name | |
Access receiver | You can passthis or *thisAccess type value
| Inaccessible
Scenario: Write a program to manage student records.
Implementation:
type Student struct { name string age int } func (s *Student) GetName() string { return s.name } func (s *Student) SetName(name string) { s.name = name } func main() { student := &Student{"John", 20} fmt.Println(student.GetName()) // 输出:"John" student.SetName("Jane") fmt.Println(student.GetName()) // 输出:"Jane" }In this example, the
Student type has a
GetName method that is used to retrieve the student's name, and a
SetName method for setting the student's name. By using a pointer receiver
(*Student), a method can modify the receiver value.
mainCreates a structure of type
Student and uses its methods to manage student data.
The above is the detailed content of Detailed explanation of the similarities and differences between methods and functions in Go language. For more information, please follow other related articles on the PHP Chinese website!