변수와 함수 반환 값의 동작 차이 이해
제공된 코드에서 의도는 두 줄의 코드를 결합하는 것입니다. 특정 작업을 수행합니다. 그러나 두 번째 시도에서는 오류가 발생합니다.
두 번째 경우 오류 발생
"models/models.go:104:잘못된 작업 sha1. Sum(([]byte)(uf.Pwd))[:] (주소를 지정할 수 없는 값의 슬라이스)"는 두 번째 경우의 슬라이싱에 문제가 있음을 나타냅니다. 특히 sha1.Sum() 함수 호출의 반환 값을 슬라이스하려고 하면 문제가 발생합니다.
문제 이유
Go의 함수 반환 값은 다음과 같습니다. 주소 지정이 불가능합니다. 즉 주소 지정이 필요한 작업에서 피연산자로 사용할 수 없습니다. 이 경우 배열을 슬라이싱하려면 배열에 주소를 지정할 수 있어야 합니다.
함수 반환 값
Go에서 다음 엔터티만 주소를 지정할 수 있습니다.
해결책 및 첫 번째 사례
첫 번째 사례는 sha1.Sum()의 반환 값이 먼저 주소 지정이 가능한 지역 변수(해시)에 저장되기 때문에 올바르게 작동합니다. 그러면 이 지역 변수는 슬라이싱을 포함한 후속 작업에서 사용될 수 있습니다.
결론
두 번째 경우와 같은 오류를 방지하려면 다음 사항을 이해하는 것이 중요합니다. Go의 주소 지정 규칙. 함수 반환 값은 주소 지정이 불가능하며 슬라이싱을 위해서는 배열 피연산자의 주소 지정이 필요합니다.
위 내용은 Go에서 함수의 반환 값을 분할할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!