首頁  >  文章  >  後端開發  >  golang支援同名方法嗎

golang支援同名方法嗎

青灯夜游
青灯夜游原創
2022-12-08 19:29:265495瀏覽

golang支援同名方法。 Go語言中允許在同一套件中建立兩個或多個具有相同名稱的方法,但是這些方法的接收者必須具有不同的類型;注意該功能在Go函數中不可用,這意味著不允許使用者在同一在套件中建立相同名稱的方法,如果嘗試這樣做,則編譯器將拋出錯誤。

golang支援同名方法嗎

本教學操作環境: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支援同名方法嗎

#更多程式相關知識,請造訪:程式影片! !

以上是golang支援同名方法嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn