구조체 리터럴에 부울 포인터 설정
Go에서는 부울에 대한 포인터를 함수에 전달할 때 구조체 리터럴의 bool 필드 값을 직접 입력합니다. 그러나 표준 구문에서는 아래와 같이 새 식별자를 정의해야 합니다.
func check(is handler){} type handler struct{ is *bool } func main() { var x bool = true check(handler{is: &x}) }
이 요구 사항을 우회하고 구조체 리터럴에서 직접 bool 포인터를 true로 설정하려면 몇 가지 접근 방식이 있습니다.
옵션 1: 슬라이스 사용
이 방법은 단일 bool 값이 true인 슬라이스를 생성합니다. 첫 번째 요소의 색인을 생성하고 해당 주소를 가져옵니다.
h := handler{is: &[]bool{true}[0]}
이 기술은 새 변수 정의를 방지하지만 불필요한 상용구를 도입하고 메모리에 백업 배열을 남겨둡니다.
옵션 2: 도우미 함수 사용
더 최적의 솔루션은 다음을 사용하여 부울 포인터를 생성하는 도우미 함수를 만드는 것입니다. 참값:
func newTrue() *bool { b := true return &b }
이 함수를 사용하면 구조체 리터럴에 bool 포인터를 설정하면 다음과 같습니다.
h := handler{is: newTrue()}
옵션 3: 한 줄 익명 함수 사용
또 다른 방법은 익명 함수를 사용하여 단일 작업으로 동일한 작업을 수행하는 것입니다. 행:
h := handler{is: func() *bool { b := true; return &b }()}
옵션 4: 익명 함수를 사용한 변형
이전 접근 방식의 약간 변형:
h := handler{is: func(b bool) *bool { return &b }(true)}
이 기술은 다음을 제공합니다. 추가 식별자나 불필요한 오버헤드 없이 구조체 리터럴에서 bool 포인터를 true로 설정하는 대안입니다. 개발자는 자신의 필요와 스타일 선호도에 가장 적합한 접근 방식을 선택할 수 있습니다.
위 내용은 Go 구조체 리터럴 내에서 부울 포인터를 True로 효율적으로 설정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!