ホームページ > バックエンド開発 > Golang > 「this」を値で渡すことは Go メソッドのパフォーマンスに影響しますか?

「this」を値で渡すことは Go メソッドのパフォーマンスに影響しますか?

Patricia Arquette
リリース: 2024-12-19 17:27:10
オリジナル
736 人が閲覧しました

Does Passing

「this」を値で渡すと Go メソッドのパフォーマンスが低下しますか?

関数の引数に値を渡すとパフォーマンスが大幅に向上する可能性がある C とは異なります変数のコピーによるペナルティがあるため、Go のメソッド レシーバーは異なるパラダイムに従います。

メソッド レシーバーは単なる構文上の便宜です。以下に示すように:

type Something struct {
    Value int
}

func (s *Something) ChangeValue(n int) {
    s.Value = n
}

func main() {
    o := new(Something)
    fmt.Println(o.Value)           // Prints 0
    o.ChangeValue(8)             // Changes o's value to 8
    fmt.Println(o.Value)           // Prints 8
    (*Something).ChangeValue(o, 16) // Same as calling o.ChangeValue(16)
    fmt.Println(o.Value)           // Prints 16
}
ログイン後にコピー

ChangeValue のレシーバー s はポインターであり、C の参照と似ていることに注意してください。レシーバーが値型の場合、値の変更は許可されません。

したがって、Go のポインター レシーバーのアプローチは、C/C で観察されるパフォーマンス上のペナルティとは異なり、カプセル化を保証し、「this」インスタンス全体のコピーを防ぎます。引数を値で渡すため。

以上が「this」を値で渡すことは Go メソッドのパフォーマンスに影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート