golang에서 다양한 유형의 매개변수를 전달하는 방법

PHPz
풀어 주다: 2024-04-23 08:36:02
원래의
395명이 탐색했습니다.

Go에서 함수의 매개변수 전달 방법은 1) 값에 의한 전달(기본 유형 및 구조), 2) 참조에 의한 전달(참조 유형 및 포인터), 3) 값에 의한 참조 전달(드물게 사용됨)로 구분됩니다. 적절한 전달 방법을 선택하면 기능 성능과 의미에 영향을 미칩니다.

golang에서 다양한 유형의 매개변수를 전달하는 방법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!