Go의 매개변수와 클로저: 언제 어느 것을 사용해야 할까요?

Mary-Kate Olsen
풀어 주다: 2024-11-11 19:17:03
원래의
232명이 탐색했습니다.

Parameters vs. Closures in Go: When to Use Which?

함수 클로저에 매개변수 전달

Go에서는 매개변수를 사용하여 익명 함수를 생성할지 아니면 클로저를 생성할지 선택하는 것이 변수 공유 및 함수 동작.

매개변수 대 클로저

  • 매개변수: 값의 복사본을 함수에 전달합니다.
  • 클로저: 바깥쪽 범위에서 변수를 참조합니다.

매개변수 사용 시기

  • 함수에 필요한 경우 호출 시 변수 값의 스냅샷.
  • 여러 고루틴에 의한 변수의 동시 수정을 방지하는 것이 중요합니다.

클로저 사용 시기

  • 함수가 바깥쪽 범위 내의 변수에 액세스하고 수정해야 하는 경우.
  • 함수를 여러 번 호출하여 변수를 공유하려는 경우

예: 클로저와 매개변수

클로저와 매개변수의 차이점을 설명하는 다음 코드 예제를 고려하세요.

클로저:

for i := 0; i < 3; i++ {
    go func() {
        fmt.Println(i)
    }()
}
로그인 후 복사

매개변수:

for i := 0; i < 3; i++ {
    go func(v int) {
        fmt.Println(v)
    }(i)
}
로그인 후 복사

결과:

  • 마감: 인쇄 고루틴 생성 시 i 값으로, 모든 호출에 대해 "3"이 됩니다.
  • 매개변수: 고루틴이 실행될 때 i 값을 인쇄하여 "0"이 됩니다. "1," "2".

결론

매개변수와 클로저 사이의 선택은 원하는 동작과 변수 공유 요구 사항에 따라 다릅니다. 함수에 값의 스냅샷이 필요한 경우 매개변수가 선호됩니다. 클로저는 바깥쪽 범위 내의 변수에 액세스 및 수정하거나 여러 호출에서 변수를 공유할 때 유용합니다.

위 내용은 Go의 매개변수와 클로저: 언제 어느 것을 사용해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿