다음 Go 코드에서 컴파일러는 prev 변수에 대해 "선언되었지만 사용되지 않음" 오류를 보고합니다.
<code class="go">package main import "fmt" // fibonacci is a function that returns // a function that returns an int. func fibonacci() func() int { prev := 0 curr := 1 return func() int { temp := curr curr := curr + prev prev := temp return curr } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }</code>
컴파일러는 prev 변수가 선언되었지만 사용되지 않았음을 올바르게 식별합니다. 이는 fibonacci 함수에서 선언된 prev 변수가 코드에서 참조되지 않는다는 것을 의미합니다.
prev 변수를 올바르게 사용하도록 fibonacci 함수를 수정하면 오류를 해결할 수 있습니다. 코드의 의도는 prev := temp 할당을 사용하여 prev 변수를 수정하는 것 같습니다. 그러나 이 할당은 주변 범위에서 숨겨진 prev라는 새 지역 변수를 생성합니다. 대신 올바른 할당에서는 선언 키워드 없이 = 연산자를 사용해야 합니다.
<code class="go">func fibonacci() func() int { prev := 0 curr := 1 return func() int { temp := curr curr := curr + prev prev = temp return curr } }</code>
두 번째 prev 할당에서 선언 키워드(:=)를 제거하면 코드가 상속된 prev 변수를 올바르게 수정합니다. 이렇게 하면 컴파일러 오류가 해결되고 코드가 의도한 대로 작동할 수 있습니다.
위 내용은 내 Go 코드가 사용에도 불구하고 `prev` 변수에 \'선언되었지만 사용되지 않음\' 오류를 보고하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!