golang支援同名方法。Go語言中允許在同一包中建立兩個或多個具有相同名稱的方法,但是這些方法的接收者必須具有不同的型別;注該功能在Go函數中不可用,這意味著不允許使用者在同一包中建立相同名稱的方法,如果嘗試這樣做,則編譯器將丟擲錯誤。
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()
}
登入後複製
輸出:
用法說明:在上面的範例中,我們有兩個相同的名稱方法,即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支援同名方法嗎的詳細內容,更多請關注TW511.COM其它相關文章!
<script type="text/javascript" src="https://sw.php.cn/hezuo/43cc2463da342d2af2696436bd2d05f4.html?bottom" ></script>