Go では、メソッド セットを通じて同じ型でのメソッドのオーバーロード、つまり、名前は同じだがパラメーターが異なる複数のメソッドを定義できます。メソッド セットはインターフェイスに含める必要があり、メソッド名は同じで、パラメーターの型は異なり、戻り値の型は同じでも異なっていても構いません。たとえば、Point 型は、別の Point パラメータを受け入れる Distance メソッドと、パラメータを受け入れないメソッドをオーバーロードできます。
Go は、従来の意味でのメソッドのオーバーロード、つまり、同じ名前で同じ型の異なるパラメーターを持つメソッドの定義をサポートしていません。ただし、Go はメソッド セットと呼ばれる代替手段を提供しており、これを使用すると、名前は同じだがパラメータが異なる複数のメソッドを定義できます。
Go でメソッドをオーバーロードするには、次の構文を使用できます。
type TypeName interface { MethodName(param1Type param1Name, param2Type param2Name, ...)returnType }
方法を示す例を考えてみましょう。 Point
型の Distance
メソッドをオーバーロードしました。
type Point struct { x, y float64 } func (p Point) Distance(q Point) float64 { return math.Sqrt(math.Pow(p.x-q.x, 2) + math.Pow(p.y-q.y, 2)) } func (p Point) DistanceToOrigin() float64 { return math.Sqrt(math.Pow(p.x, 2) + math.Pow(p.y, 2)) }
上記の例では、Point
型には 2 つの Distance
メソッドがあります。1 つは別の Point
パラメータを受け取り、もう 1 つはパラメータを受け取りません。パラメーター。コンパイラはメソッドのパラメータの型に基づいて区別するため、両方のメソッドに同じ名前を使用できます。
以上がgolangメソッドをオーバーロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。