Go语言的接口内方法调用

Go语言的接口调用

通过接口类型的值调用方法:

  1. 使用指针作为接收者声明的方法,只能在接口类型的值为指针的时候调用;
  2. 使用值作为接收者声明的方法,在接口类型的值为值或者指针时,都可以被调用;

举例说明:

// 声明接口
type defaultMatcher struct {}

type Matcher interface {
	Print(info string)
}

实现接口方式一:
func (matcher defaultMatcher) Print(info string) {
	fmt.Println(info)
}
main函数逻辑:
var matcher defaultMatcher

var mat Matcher = &matcher
mat.Print("matcher *defaultMatcher")	// 调用成功
---------------
var mat Matcher = matcher
mat.Print("matcher *defaultMatcher")	// 调用成功

实现接口方式二:
func (matcher *defaultMatcher) Print(info string) {
	fmt.Println(info)
}
main函数逻辑:
var matcher defaultMatcher

var mat Matcher = &matcher
mat.Print("matcher *defaultMatcher")	// 调用成功

var mat Matcher = matcher	// 赋值失败
mat.Print("matcher *defaultMatcher")

另一方面,总结,值接收者使用值的副本来调用方法,而指针接收者使用实际值来调用方法。

使用值接收者还是使用指针接收者,遵循指导方针(后续了解)

补充:

json格式转换为某个结构体类型时,结构体内的字段名称首字母需大写才能转换成功。

此条目发表在编程语言分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注