Go で関数パラメータを渡すとき、スライスとマップは値の代わりに参照を渡します。関数内のスライスを変更すると、呼び出し元の関数内のスライスに影響します。関数内のマッピングの変更は、呼び出し元の関数内のマッピングにも影響します。コピーを渡す必要がある場合は、コピー機能を使用できます。複数のゴルーチンがスライスまたはマップに同時にアクセスする場合、データの競合を考慮し、アクセスを同期するためにミューテックスを使用する必要があります。
Go で渡す関数パラメータのスライスとマッピング
Go では、関数パラメータは値型または参照型にすることができます。値型はパラメーターが渡されるときにコピーされますが、参照型は参照によって渡されます。
Slice
Slice は参照型であるため、関数パラメータが渡されるときにその参照が渡されます。これは、関数内のスライス要素に加えられた変更が、それを呼び出す関数に反映されることを意味します。
例:
func modifySlice(slice []int) { slice[0] = 100 // 修改切片元素 } func main() { slice := []int{1, 2, 3} modifySlice(slice) // 传递切片引用 fmt.Println(slice) // 输出:[100 2 3] }
Mapping
Mapping も参照型であり、その参照も関数パラメータのときに渡されます。渡されます。スライスと同様に、関数内でマップに加えられた変更は、それを呼び出す関数に反映されます。
例:
func modifyMap(m map[string]int) { m["key"] = 100 // 修改映射元素 } func main() { m := make(map[string]int) m["key"] = 1 modifyMap(m) // 传递映射引用 fmt.Println(m["key"]) // 输出:100 }
注意事項
copy
関数を使用してコピーを作成できます。 sync.Mutex
) を使用して、スライスまたはマップへのアクセスを同期します。 以上がGolang関数のパラメータ受け渡しにおけるスライスとマッピングの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。