• 技术文章 >后端开发 >Golang

    golang支持同名方法吗

    青灯夜游青灯夜游2022-12-08 19:29:31原创1983

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

    本教程操作环境: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() 
    }

    输出:

    1.png

    用法说明:在上面的示例中,我们有两个相同的名称方法,即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()) 
    }

    输出:

    2.png

    更多编程相关知识,请访问:编程视频!!

    以上就是golang支持同名方法吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:golang注释有几种 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • go语言有哪些类型• 一文深析MongoDB存储引擎(附原理图)• golang数组怎么删除元素• golang map怎么删除元素• golang注释有几种
    1/1

    PHP中文网