エラー: Golang ではスライスへのポインタを範囲指定できません
Golang でスライスへのポインタを反復しようとすると、「範囲を指定できません」レンジオーバースライスポインタ」エラーが発生する場合があります。スライスへのポインタは一般に不要であるため、これはよくある誤解です。
提供されたコード スニペットでは、populateClassRelationships 関数で問題が発生します。
func (c *ClassRepository) populateClassRelationships(classes *[]entities.Class) { for i := range classes { <---------- Here is the problem
classes パラメータの型は次のとおりです。スライス (*[]entities.Class) へのポインターですが、レンジオーバー構文では直接スライス タイプが必要です。 ([]entities.Class).
Reason
Go スライスはすでに基礎となる配列へのポインタであるため、スライスへのポインタは技術的に冗長で非効率的です。スライスには次の情報が含まれます。
そのため、スライスをポインターに代入しても値は追加されず、
解決策
エラーを解決するには、間接指定 (*) を削除するだけです。スライスを反復処理するための正しい構文は次のとおりです。
func (c *ClassRepository) populateClassRelationships(classes []entities.Class) { for i := range classes {
これは、スライスへのポインターを参照せずに、クラス スライスの要素を直接反復処理します。
以上がGo Return が「ポインタからスライスまでの範囲を越えることができない」のはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。