>백엔드 개발 >Golang >Go에서 빈 구조체(`struct{}` 및 `struct{}{}`)의 용도와 속성은 무엇입니까?

Go에서 빈 구조체(`struct{}` 및 `struct{}{}`)의 용도와 속성은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-17 17:46:10137검색

What are the Uses and Properties of Empty Structs (`struct{}` and `struct{}{}`) in Go?

Go의 빈 구조체 이해: struct{} 및 struct{}{}

Go에서 struct 키워드는 구조화된 데이터를 정의합니다. 명명된 요소로 구성된 유형입니다. 그러나 관용적인 Go 코드에서 자주 발견되는 struct{} 및 struct{}{}는 특별한 주의를 기울일 가치가 있습니다.

struct{}: 빈 구조체

구조체 {}는 요소가 없는 빈 구조체를 나타내는 특별한 경우입니다. 크기가 0이라는 고유한 속성이 있습니다. 즉, 이 유형의 값에 메모리가 할당되지 않음을 의미합니다.

복합 리터럴로서의 struct{}{}

대조적으로, int{5} 또는 []string{"Go", "Python"}과 유사하게 작성된 struct{}{}는 값을 명시적으로 구성하는 복합 리터럴입니다. 구조체{} 유형입니다. 구조체{}에는 정의된 요소가 없으므로 이 리터럴에는 필드가 없습니다.

빈 구조체의 애플리케이션

빈 구조체는 Go 코드에서 다양한 용도를 찾을 수 있습니다.

  • 지도 값의 "자리 표시자"로: 지도를 사용하여 세트(고유 값의 컬렉션)를 저장하는 경우 요소), 값 유형을 구조체{}로 설정하면 관련 값에 공간을 낭비하지 않고 키(요소)만 저장됩니다.
  • 구조체 내의 필드로서: 빈 구조체는 구조 내에 추가 패딩을 제공할 수 있습니다. 특정 아키텍처에 대한 특정 정렬 요구 사항을 보장하는 더 큰 구조체.

예: 빈 항목을 사용하여 세트 생성 구조체

다음은 집합을 생성하기 위해 빈 구조체 값 유형이 있는 맵을 사용하는 예입니다.

package main

import "fmt"

type Set map[string]struct{}

func main() {
    s := make(Set)
    s["red"] = struct{}{}
    s["blue"] = struct{}{}

    fmt.Println(s)  // Prints: map[blue:{} red:{}]
}

이 접근 방식은 키의 존재만 확인하는 것이지, 키의 존재만 확인하지 않는다는 점에 유의하세요. 연관된 값입니다.

위 내용은 Go에서 빈 구조체(`struct{}` 및 `struct{}{}`)의 용도와 속성은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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