ホームページ > バックエンド開発 > Golang > Go でスライスへのポインターを範囲指定できないのはなぜですか?

Go でスライスへのポインターを範囲指定できないのはなぜですか?

Patricia Arquette
リリース: 2024-12-04 22:54:16
オリジナル
840 人が閲覧しました

Why Can't I Range Over a Pointer to a Slice in Go?

Go ではスライスへのポインターを範囲指定できない

Go では、「ポインターからスライスへの範囲を指定できません」というエラーがよく発生します。スライス ポインタを反復しようとしたとき。このエラーは、反復中にポインタが自動的に逆参照されるという誤った仮定から発生します。

残念ながら、Go はポインタからスライスへの型を暗黙的に逆参照しません。その理由は、スライス自体が配列へのポインターとして機能するためです。スライスを関数に渡すと、関数は基礎となるデータにアクセスできるようになっているため、追加のポインターは必要ありません。

書籍『Effective Go』で説明されているように、「関数がスライス引数を取ると、変更が行われます」これは、基礎となる配列へのポインタを渡すのと同様に、スライスの要素が呼び出し元に見えるようにします。"

内部的に、スライスが作成されます。の:

  • 基になる配列の最初の要素へのポインター
  • スライスの長さ
  • スライスの容量

このコンパクトな構造によりポインタが不要になり、ポインタをスライスまで移動できなくなります。

以上がGo でスライスへのポインターを範囲指定できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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