Go에서 함수 매개변수를 전달할 때 슬라이스와 맵은 값 대신 참조를 전달합니다. 함수의 슬라이스 수정은 호출하는 함수의 슬라이스에 영향을 미칩니다. 함수의 매핑 수정은 호출하는 함수의 매핑에도 영향을 미칩니다. 복사본을 전달해야 하는 경우 복사 기능을 사용할 수 있습니다. 여러 고루틴이 동시에 슬라이스나 맵에 액세스하는 경우 데이터 경쟁을 고려해야 하며 액세스를 동기화하기 위해 뮤텍스를 사용해야 합니다.
Go에서 전달되는 함수 매개변수의 슬라이싱 및 매핑
Go에서 함수 매개변수는 값 유형 또는 참조 유형이 될 수 있습니다. 값 유형은 매개변수가 전달될 때 복사되는 반면, 참조 유형은 참조로 전달됩니다.
Slices
Slices는 참조 유형이므로 함수 매개변수가 전달될 때 이에 대한 참조가 전달됩니다. 이는 함수의 슬라이스 요소에 대한 모든 변경 사항이 이를 호출하는 함수에 반영된다는 것을 의미합니다.
예:
func modifySlice(slice []int) { slice[0] = 100 // 修改切片元素 } func main() { slice := []int{1, 2, 3} modifySlice(slice) // 传递切片引用 fmt.Println(slice) // 输出:[100 2 3] }
Map
Map도 참조 유형이며 해당 참조도 함수 매개변수가 전달될 때 전달됩니다. 슬라이싱과 유사하게, 함수에서 맵에 대한 모든 변경 사항은 이를 호출하는 함수에 반영됩니다.
예:
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 }
Notes
복사
기능을 사용하여 복사본을 만들 수 있습니다. copy
函数来创建副本。sync.Mutex
sync.Mutex
)을 사용하여 슬라이스 또는 맵에 대한 액세스를 동기화할 수 있습니다. 🎜🎜위 내용은 Golang 함수 매개변수 전달 시 슬라이싱 및 매핑 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!