ホームページ  >  記事  >  バックエンド開発  >  golangメソッドをオーバーロードするにはどうすればよいですか?

golangメソッドをオーバーロードするにはどうすればよいですか?

王林
王林オリジナル
2024-04-27 18:06:01826ブラウズ

Go では、メソッド セットを通じて同じ型でのメソッドのオーバーロード、つまり、名前は同じだがパラメーターが異なる複数のメソッドを定義できます。メソッド セットはインターフェイスに含める必要があり、メソッド名は同じで、パラメーターの型は異なり、戻り値の型は同じでも異なっていても構いません。たとえば、Point 型は、別の Point パラメータを受け入れる Distance メソッドと、パラメータを受け入れないメソッドをオーバーロードできます。

如何重载 golang 方法?

Go メソッドをオーバーロードするにはどうすればよいですか?

概要

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 サイトの他の関連記事を参照してください。

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