>백엔드 개발 >Golang >추가 변수를 정의하지 않고 Go 구조체 리터럴의 `bool` 포인터에 `true`를 할당하려면 어떻게 해야 합니까?

추가 변수를 정의하지 않고 Go 구조체 리터럴의 `bool` 포인터에 `true`를 할당하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-03 11:14:10920검색

How Can I Assign `true` to a `bool` Pointer in a Go Struct Literal Without Defining Extra Variables?

Go 구조체 리터럴의 부울 포인터에 True 할당

Go 프로그래머는 구조체 리터럴 내에서 부울 포인터를 true로 설정해야 하는 상황에 자주 직면합니다. . 이 문서에서는 새 식별자를 정의하지 않고 이 목표를 달성하기 위해 사용할 수 있는 옵션에 대해 자세히 설명합니다.

제공된 코드 조각은 부울 포인터를 사용하는 함수를 보여주며 is 필드를 허용하는 구문이 존재하는지 여부에 대한 질문을 촉발합니다. 구조체 리터럴 자체에서 true로 설정됩니다.

설정 접근 방식 사실:

1. 배열 인덱싱(최적 아님):

h := handler{is: &[]bool{true}[0]}

이 방법에는 true로 설정된 단일 bool을 사용하여 배열을 생성하고, 이를 인덱싱하고, 인덱싱된 요소의 주소를 할당하는 작업이 포함됩니다. 추가 변수가 필요하지 않지만 상용구와 메모리 소모가 단점이다.

2. 포인터 반환을 포함하는 도우미 함수:

func newTrue() *bool {
    b := true
    return &b
}

이 접근 방식은 실제 부울 변수의 주소를 반환하는 도우미 함수를 도입합니다. 다음과 같이 사용됩니다.

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 값이 인수로 전달되는 기능적 프로그래밍 접근 방식을 제공합니다.

최적의 솔루션:

대부분의 시나리오에 가장 최적의 솔루션은 newTrue()와 같은 도우미 함수를 사용하는 것입니다. 구조체 리터럴에서 부울 포인터를 true로 설정하는 간결하고 재사용 가능한 방법입니다.

위 내용은 추가 변수를 정의하지 않고 Go 구조체 리터럴의 `bool` 포인터에 `true`를 할당하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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