Golang如何实现方法调用的基本概念?

2026-05-20 23:102阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计533个文字,预计阅读时间需要3分钟。

Golang如何实现方法调用的基本概念?

如果声明函数时带有接收者,则意味着声明了一个方法,同时这个方法会与指定的接收者类型绑定在一起。例如:`func (m defaultMatcher) Search(feed *Feed, searchTerm string) ([]Result, error)`。这表明`Search`是一个方法,它属于`defaultMatcher`类型的接收者,并接受一个`Feed`类型的参数和一个`string`类型的搜索词,返回一个`Result`切片和一个错误。

如果声明函数的时候带有接收者,则意味着声明了一个方法,同时,这个方法会和指定的接收者的类型绑在一起。

如:

Golang如何实现方法调用的基本概念?

func (m defaultMatcher) Search(feed *Feed, searchTerm string) ([]*Result, error) m defaultMatcher 声明接受者是defaultMatcher,如果声明函数的时候带有接收者,则意味着声明了一个方法。这个方法会和指定的接收者的类型绑在一起; feed *Feed, searchTerm string 表示输入参数是指向Feed类型的指针和字符串; []*Result, error 表示返回参数是指向Result类型的指针的切片和错误类型;

同时:

接受者有值接受者和指针接受者两种类型。值接收者使用值的副本来调用方法,而指针接受者使用实际值来调用方法(相当于内置类型和引用类型的区别),且为了匹配方法的接收者类型,会使用&和*进行转换。

对于结构体类型,无论是值接收者还是指针接受者,我们使用值或指针调用方法时,编译器都会正确地引用或者解引用对应的值,调用对应的方法。(也因为大部分方法在被调用后都需要维护接收者的值的状态,所以,建议使用指针接受者。)

但是对于接口类型,对于指针接收者,只能使用指针调用该方法;对于值接受者,可以用值或指针调用该方法

本文共计533个文字,预计阅读时间需要3分钟。

Golang如何实现方法调用的基本概念?

如果声明函数时带有接收者,则意味着声明了一个方法,同时这个方法会与指定的接收者类型绑定在一起。例如:`func (m defaultMatcher) Search(feed *Feed, searchTerm string) ([]Result, error)`。这表明`Search`是一个方法,它属于`defaultMatcher`类型的接收者,并接受一个`Feed`类型的参数和一个`string`类型的搜索词,返回一个`Result`切片和一个错误。

如果声明函数的时候带有接收者,则意味着声明了一个方法,同时,这个方法会和指定的接收者的类型绑在一起。

如:

Golang如何实现方法调用的基本概念?

func (m defaultMatcher) Search(feed *Feed, searchTerm string) ([]*Result, error) m defaultMatcher 声明接受者是defaultMatcher,如果声明函数的时候带有接收者,则意味着声明了一个方法。这个方法会和指定的接收者的类型绑在一起; feed *Feed, searchTerm string 表示输入参数是指向Feed类型的指针和字符串; []*Result, error 表示返回参数是指向Result类型的指针的切片和错误类型;

同时:

接受者有值接受者和指针接受者两种类型。值接收者使用值的副本来调用方法,而指针接受者使用实际值来调用方法(相当于内置类型和引用类型的区别),且为了匹配方法的接收者类型,会使用&和*进行转换。

对于结构体类型,无论是值接收者还是指针接受者,我们使用值或指针调用方法时,编译器都会正确地引用或者解引用对应的值,调用对应的方法。(也因为大部分方法在被调用后都需要维护接收者的值的状态,所以,建议使用指针接受者。)

但是对于接口类型,对于指针接收者,只能使用指针调用该方法;对于值接受者,可以用值或指针调用该方法