猿问

为什么 Go 接受这种方法定义语法?

编码


package main


import "fmt"


type unimplementedGreeterServer struct {

}


func (unimplementedGreeterServer) SayHello() string {

    return "hello"

}


func main() {

    s := &unimplementedGreeterServer{}

    ret := s.SayHello()

    fmt.Println(ret)

}


结果


hello


问题:为什么 SayHello 方法没有 unimplementedGreeterServer 点或 unimplementedGreeterServer 接收器可以运行


我认为权利将是


func (s unimplementedGreeterServer) SayHello2() string {

    return "hello"

}


func (s *unimplementedGreeterServer) SayHello3() string {

    return "hello"

}

不是


func (unimplementedGreeterServer) SayHello() string {

    return "hello"

}


幕布斯7119047
浏览 151回答 1
1回答

牧羊人nacy

接收器本身是可选的。如果该方法不使用接收器,则可以省略它。声明:func (unimplementedGreeterServer) SayHello() string {    return "hello"}简单地定义一个unimplementedGreeterServer不使用接收器的方法。它是为值接收者定义的,所以它是为unimplementedGreeterServer和定义的*unimplementedGreeterServer。
随时随地看视频慕课网APP

相关分类

Go
我要回答