ホームページ  >  記事  >  バックエンド開発  >  golang は同じ名前のメソッドをサポートしていますか?

golang は同じ名前のメソッドをサポートしていますか?

青灯夜游
青灯夜游オリジナル
2022-12-08 19:29:265487ブラウズ

Golang は、同じ名前のメソッドをサポートします。 Go 言語では、同じパッケージ内に同じ名前を持つ 2 つ以上のメソッドを作成できますが、これらのメソッドのレシーバーは異なる型を持つ必要があります。この機能は Go 関数では使用できないことに注意してください。つまり、ユーザーは次のことを行うことができません。同じパッケージ内で同じメソッドを使用する パッケージ内に同じ名前のメソッドを作成すると、コンパイラはエラーをスローします。

golang は同じ名前のメソッドをサポートしていますか?

このチュートリアルの動作環境: 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() 
}

出力:

golang は同じ名前のメソッドをサポートしていますか?

# 使用手順: 上記の例には、同じ名前 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 は同じ名前のメソッドをサポートしていますか?

プログラミング関連の知識の詳細については、次のサイトを参照してください: プログラミングビデオ! !

以上がgolang は同じ名前のメソッドをサポートしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。