조건문의 함수 평가
조건문은 조건 내에서 함수를 평가해야 하는 경우가 많습니다. 그러나 Go 프로그래밍 언어는 이러한 명령문에서 함수 호출을 값으로 사용하려고 할 때 특정 요구 사항을 부과합니다. 이를 더 잘 이해하려면 다음 예를 고려하십시오.
package main import "fmt" func main() { if sumThis(1, 2) > sumThis(3, 4) { fmt.Println("test") } else { fmt.Println("derp") } } func sumThis(a, b int) { return a + b }
이 코드 조각은 조건문 내에서 두 함수 호출의 결과를 비교하려고 시도합니다. 그러나 컴파일에 실패하고 다음 오류가 발생합니다.
./test4.go:4: sumThis(1, 2) used as value ./test4.go:4: sumThis(3, 4) used as value ./test4.go:11: too many arguments to return
이 오류는 sumThis 함수에 대한 반환 유형이 없기 때문에 발생합니다. 반환 유형을 생략함으로써 Go는 함수를 void를 반환하는 것으로 해석합니다. 그런 다음 함수 호출을 조건문의 값으로 사용하려고 하면 컴파일러는 반환 유형을 찾지 못하고 호출을 반환 값이 아닌 부작용에 사용된 것으로 처리합니다.
이 문제를 해결하려면 함수의 반환 유형을 명시적으로 선언해야 합니다. 이 경우 sumThis 함수는 정수를 반환하므로 해당 서명은 다음과 같아야 합니다.
func sumThis(a, b int) int { // ... }
올바른 함수 서명이 있으면 코드가 성공적으로 컴파일되고 내에서 함수 호출의 반환 값을 올바르게 비교할 것입니다. 조건문.
위 내용은 Go의 조건문에서 함수 호출을 어떻게 올바르게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!