> 백엔드 개발 > Golang > Go\의 조건문에서 변수 범위를 올바르게 처리하는 방법은 무엇입니까?

Go\의 조건문에서 변수 범위를 올바르게 처리하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-28 18:56:11
원래의
494명이 탐색했습니다.

How to Properly Handle Variable Scope in Go's Conditional Statements?

Go의 변수 범위 제한: If 문 내부 변수 문제 해결

Go에서 변수 범위는 변수가 선언된 코드 블록으로 제한됩니다. 이는 if 문의 결과에 의존하는 변수로 작업할 때 문제가 될 수 있습니다. 다음 상황을 고려하십시오.

문제:

변수의 범위가 if 블록으로 제한되어 있으므로 if 문 내에서 변수를 생성하고 나중에 사용하는 것이 제한됩니다.

예시 코드:

if len(array1) > len(array2) {
    new1 := make([]string, 0, len(array1))
    // Code using new1
}

new2 := make([]string, 0, len(new1)) // Error: new1 out of scope
copy(new2, new1)
로그인 후 복사

제안된 솔루션:

무의미한 변수를 사용하여 if 문의 결과를 저장한 다음 해당 값을 사용하여 원하는 것을 선언합니다. 변수입니다.

var pointlessvariable uint

if len(array1) > len(array2) {
    pointlessvariable = len(array1)
} else {
    pointlessvariable = len(array2)
}

var new1 = make([]string, 0, pointlessvariable)

if len(array1) > len(array2) {
    // Code using new1
}

new2 := make([]string, 0, len(new1))
copy(new2, new1)
로그인 후 복사

더 좋음 해결 방법:

if 블록 외부에 변수를 선언하고 if 문 내에서 make 함수를 사용하여 초기화합니다.

var new1 []string

if len(array1) > len(array2) {
    new1 = make([]string, 0, len(array1))
    // Code using new1
} else {
    new1 = make([]string, 0, len(array2))
    // Other code using new1
}

new2 := make([]string, 0, len(new1))
copy(new2, new1)
로그인 후 복사

이 후자의 접근 방식은 혼란스럽거나 불필요한 변수를 사용합니다.

위 내용은 Go\의 조건문에서 변수 범위를 올바르게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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