スライスは Go 言語の強力なデータ構造であり、同じ種類のデータを含むコレクションを処理するためによく使用されます。 。関数では、スライスは値として渡されます。つまり、スライスを変更しても呼び出し元のスライスには影響しません。
スライスの整合性を確保するには、関数内でスライスを操作するときに次のベスト プラクティスに従う必要があります。
関数を使用してコピーを作成できます: <pre class='brush:php;toolbar:false;'>func clone(s []int) []int {
clone := make([]int, len(s))
copy(clone, s)
return clone
}</pre>
2。スライスを変更する必要がない場合は、範囲トラバーサルを使用します。範囲トラバーサルを使用して、コピーの作成を回避します。範囲トラバーサルでは、スライスの読み取り専用コピーが自動的に作成され、反復ごとにコピーから 1 つの要素が返されます。
func printSlice(s []int) { for _, v := range s { fmt.Println(v) } }
同時にスライスにアクセスする複数の関数間でスライス参照を共有しないようにしてください。ある関数によるスライスの変更が別の関数のビューに影響を与えるため、これによりデータの整合性の問題が発生する可能性があります。
以下は、スライス内の奇数の要素を数えるために、上記のベスト プラクティスで関数を使用する例です。
func countOdds(s []int) int { // 创建切片的副本 clone := make([]int, len(s)) copy(clone, s) // 使用范围遍历计数奇数元素 count := 0 for _, v := range clone { if v%2 == 1 { count++ } } return count }
以上がgolang 関数のスライス操作のベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。