Home > Backend Development > Golang > Detailed explanation of the similarities and differences between methods and functions in Go language

Detailed explanation of the similarities and differences between methods and functions in Go language

WBOY
Release: 2024-04-03 10:51:01
Original
509 people have browsed it

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.

Detailed explanation of the similarities and differences between methods and functions in Go language

Methods and functions in Go language

Background

In Go language, methods and functions are code blocks, used for Perform specific tasks. However, there are some key differences between them.

Methods

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)
}
Copy after login

In the above example, Greet is a method of type Person, which can be accessed through p.Greet()transfer.

Function

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)
}
Copy after login

In the above example, Greet is a function that is called via Greet("John"), where "John" is passed as a parameter.

Similarities and Differences

Related to a specific typeIndependent of typeType name.Method nameFunction nameYou can pass Inaccessible
FeaturesMethodFunction
##Associated type
Calling syntax
Access receiverthis or *thisAccess type value
Practical case

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"
}
Copy after login
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.

Function

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!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template