ホームページ > バックエンド開発 > Golang > Go の「*」修飾子: 値渡しまたは参照渡し?

Go の「*」修飾子: 値渡しまたは参照渡し?

Barbara Streisand
リリース: 2024-12-27 00:53:09
オリジナル
213 人が閲覧しました

Go's

Go での参照および値の受け渡し: "*" 修飾子を理解する

関数との間でのデータの受け渡しはプログラミングの基本的な側面です。 Go では、これを行うには主に 2 つの方法があります。値による受け渡しと参照による受け渡しです。後者には「*」修飾子の使用が含まれますが、初心者にとっては混乱する可能性があります。

Java では、オブジェクトは本質的に参照として渡されるため、オブジェクトの参照による受け渡しは簡単です。ただし、値渡しと参照渡しの両方が可能な Go では、ポインターを使用する方が効率的です。

」は型へのポインターを示します。たとえば、 func PutTasks(db sql.DB) は、db パラメーターが sql.DB オブジェクトへのポインターであることを示します。この理由は、Go は技術的に値渡しのみをサポートしており、ポインタを渡すことは参照渡しをシミュレートする方法であるためです。

ポインタを渡すときは、値 (ポインタ自体)、メモリ内の実際のオブジェクトを指します。これは、ポインターを介してオブジェクトに加えられた変更が、関数に渡された元の変数に反映されることを意味します。一方、値を直接 (「*」なしで) 渡すと、元の値のコピーが作成されるため、関数内で行われた変更は元の変数には影響しません。

提供されている例では、 func Printperson( p *person) は、詳細を出力するために Person オブジェクトを変更する必要があるため、ポインターが必要です。代わりに値を受け取った場合、変更は関数内に保持されているコピーにのみ影響します。

Go で効果的にコードを記述するには、参照渡しと値渡しを理解することが重要です。適切な場合にポインターを使用すると、パフォーマンスが向上し、関数と呼び出し元のコード間の一貫性が維持されます。

以上がGo の「*」修飾子: 値渡しまたは参照渡し?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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