>백엔드 개발 >Golang >Go 구조체 리터럴 내에서 부울 포인터를 True로 효율적으로 설정하려면 어떻게 해야 합니까?

Go 구조체 리터럴 내에서 부울 포인터를 True로 효율적으로 설정하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-02 09:21:12157검색

How Can I Efficiently Set a Bool Pointer to True within a Go Struct Literal?

구조체 리터럴에 부울 포인터 설정

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.