Go での参照および値の受け渡し: "*" 修飾子を理解する
関数との間でのデータの受け渡しはプログラミングの基本的な側面です。 Go では、これを行うには主に 2 つの方法があります。値による受け渡しと参照による受け渡しです。後者には「*」修飾子の使用が含まれますが、初心者にとっては混乱する可能性があります。
Java では、オブジェクトは本質的に参照として渡されるため、オブジェクトの参照による受け渡しは簡単です。ただし、値渡しと参照渡しの両方が可能な Go では、ポインターを使用する方が効率的です。
「」は型へのポインターを示します。たとえば、 func PutTasks(db sql.DB) は、db パラメーターが sql.DB オブジェクトへのポインターであることを示します。この理由は、Go は技術的に値渡しのみをサポートしており、ポインタを渡すことは参照渡しをシミュレートする方法であるためです。
ポインタを渡すときは、値 (ポインタ自体)、メモリ内の実際のオブジェクトを指します。これは、ポインターを介してオブジェクトに加えられた変更が、関数に渡された元の変数に反映されることを意味します。一方、値を直接 (「*」なしで) 渡すと、元の値のコピーが作成されるため、関数内で行われた変更は元の変数には影響しません。
提供されている例では、 func Printperson( p *person) は、詳細を出力するために Person オブジェクトを変更する必要があるため、ポインターが必要です。代わりに値を受け取った場合、変更は関数内に保持されているコピーにのみ影響します。
Go で効果的にコードを記述するには、参照渡しと値渡しを理解することが重要です。適切な場合にポインターを使用すると、パフォーマンスが向上し、関数と呼び出し元のコード間の一貫性が維持されます。
以上がGo の「*」修飾子: 値渡しまたは参照渡し?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。