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