站长资讯网
最全最丰富的资讯网站

golang支持同名方法吗

golang支持同名方法。Go语言中允许在同一包中创建两个或多个具有相同名称的方法,但是这些方法的接收者必须具有不同的类型;注该功能在Go函数中不可用,这意味着不允许用户在同一包中创建相同名称的方法,如果尝试这样做,则编译器将抛出错误。

golang支持同名方法吗

php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用

本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

Go 同名方法

在Go语言中,允许在同一包中创建两个或多个具有相同名称的方法,但是这些方法的接收者必须具有不同的类型。该功能在Go函数中不可用,这意味着不允许您在同一包中创建相同名称的方法,如果尝试这样做,则编译器将抛出错误。

语法:

func(reciver_name_1 Type) method_name(parameter_list)(return_type){     // Code } func(reciver_name_2 Type) method_name(parameter_list)(return_type){     // Code }
登录后复制

让我们借助示例来讨论这个概念:

范例1:

package main     import "fmt"    //创建结构体 type student struct {      name   string      branch string  }     type teacher struct {      language string      marks    int }     //名称相同的方法,但有不同类型的接收器 func (s student) show() {         fmt.Println("学生姓名:", s.name)      fmt.Println("Branch: ", s.branch)  }     func (t teacher) show() {         fmt.Println("Language:", t.language)      fmt.Println("Student Marks: ", t.marks)  }     func main() {         // 初始化结构体的值     val1 := student{"Rohit", "EEE"}         val2 := teacher{"Java", 50}         //调用方法     val1.show()      val2.show()  }
登录后复制

输出:

golang支持同名方法吗

用法说明:在上面的示例中,我们有两个相同的名称方法,即show(),但接收器的类型不同。这里,第一个show()方法包含s student类型的接收者,第二个show()方法包含t teacher类型的接收者。在main()函数中,我们借助各自的结构体变量来调用这两种方法。如果尝试使用相同类型的接收器创建此show()方法,则编译器将抛出错误。

范例2:

//创建相同名称的方法 //非结构类型的接收器 package main     import "fmt"    type value_1 string  type value_2 int    //创建具有相同名称的函数 //不同类型的非结构接收器 func (a value_1) display() value_1 {         return a + ".com" }     func (p value_2) display() value_2 {         return p + 298  }     func main() {         //初始化值      res1 := value_1("nhooo")      res2 := value_2(234)         // 打印显示结果     fmt.Println("Result 1: ", res1.display())      fmt.Println("Result 2: ", res2.display())  }
登录后复制

输出:

golang支持同名方法吗

赞(0)
分享到: 更多 (0)