Go에서 함수의 매개변수 전달 방법은 1) 값에 의한 전달(기본 유형 및 구조), 2) 참조에 의한 전달(참조 유형 및 포인터), 3) 값에 의한 참조 전달(드물게 사용됨)로 구분됩니다. 적절한 전달 방법을 선택하면 기능 성능과 의미에 영향을 미칩니다.
Go에서 다양한 유형의 매개변수를 전달하는 방법
Go에서 함수의 매개변수는 다양한 방법으로 전달될 수 있으며, 이는 함수가 이러한 매개변수를 사용하는 방식에 영향을 미칩니다. 다음은 Go에서 다양한 유형의 매개변수를 전달하는 세 가지 일반적인 방법입니다.
값으로 전달
값으로 전달하는 것이 가장 간단한 전달 방법입니다. 이러한 방식으로 함수는 인수의 복사본을 생성하므로 인수를 변경해도 원래 값에는 영향을 주지 않습니다. 기본 유형(예: int, float64, string) 및 구조는 값으로 전달됩니다. 예:
func inc(n int) { // 创建参数 n 的副本 n++ } func main() { a := 5 inc(a) // a 的值保持为 5,因为 n 是 a 的副本 fmt.Println(a) // 输出:5 }
참조로 전달
참조로 전달 매개변수를 포인터로 전달합니다. 함수는 매개변수에 대한 포인터를 수정하여 원래 값을 간접적으로 수정할 수 있습니다. 참조 유형(예: 조각, 맵, 함수)은 참조로 전달됩니다. 포인터(예: *int
)도 참조로 전달됩니다. 예:
func inc(n *int) { // n 是指向原始值 a 的指针 *n++ } func main() { a := 5 inc(&a) // 修改 a 的值 fmt.Println(a) // 输出:6 }
값으로 참조 전달
값으로 참조 전달은 흔하지 않은 전달 방법이지만 때로는 유용합니다. 이러한 방식으로 함수는 매개변수 값에 대한 포인터의 복사본을 만듭니다. 예:
func incValueRef(val *float64) { // val 是指向参数值 f 的指针的副本 *val++ } func main() { f := 5.0 incValueRef(&f) // 修改 f 的值 fmt.Println(f) // 输出:6.0 }
올바른 전달 방법을 선택하는 것은 함수의 성능과 의미에 영향을 미치기 때문에 중요합니다. 값으로 전달하는 것이 더 빠르지만 참조로 전달하면 함수가 원래 값을 수정할 수 있습니다. 참조별 전달은 둘 사이의 절충안을 제공합니다.
위 내용은 golang에서 다양한 유형의 매개변수를 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!