Golang は、同じ名前のメソッドをサポートします。 Go 言語では、同じパッケージ内に同じ名前を持つ 2 つ以上のメソッドを作成できますが、これらのメソッドのレシーバーは異なる型を持つ必要があります。この機能は Go 関数では使用できないことに注意してください。つまり、ユーザーは次のことを行うことができません。同じパッケージ内で同じメソッドを使用する パッケージ内に同じ名前のメソッドを作成すると、コンパイラはエラーをスローします。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
同じ名前の Go メソッド
Go 言語では、同じ名前のメソッドを 2 つ以上作成できます。同じパッケージですが、これらのメソッドのレシーバーは異なるタイプである必要があります。この機能は 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() のメソッドが 2 つありますが、レシーバーのタイプは次のとおりです。違う。ここで、最初の show() メソッドにはタイプ s の学生のレシーバーが含まれ、2 番目の show() メソッドにはタイプ t の教師のレシーバーが含まれています。 main() 関数では、それぞれの構造体変数を使用してこれら 2 つのメソッドを呼び出します。同じタイプのレシーバーを使用してこの 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 は同じ名前のメソッドをサポートしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。