>  기사  >  백엔드 개발  >  Go에서 구조체에 대한 포인터 조각을 초기화하는 방법: 익명 구조체 구문 분석

Go에서 구조체에 대한 포인터 조각을 초기화하는 방법: 익명 구조체 구문 분석

Patricia Arquette
Patricia Arquette원래의
2024-11-01 13:15:06525검색

How to Initialize a Slice of Pointers to Structs in Go: A Breakdown of Anonymous Struct Syntax?

포인터 조각 초기화: 익명 구조체 구문 이해

GOPL 7장에는 Track 구조체에 대한 포인터 조각을 초기화하는 예가 나와 있습니다.

var tracks = []*Track{
    {"Go", "Delilah", "From the Roots Up", 2012, length("3m38s")},
    {"Go", "Moby", "Moby", 1992, length("3m37s")},
    {"Go Ahead", "Alicia Keys", "As I Am", 2007, length("4m36s")},
    {"Ready 2 Go", "Martin Solveig", "Smash", 2011, length("4m24s")},
}

구문을 이해하기 위해 사용자 정의 Ex 구조체를 정의하고 해당 슬라이스를 초기화하는 다음 코드를 살펴보겠습니다.

type Ex struct {
    A, B int
}

a := []Ex{Ex{1, 2}, Ex{3, 4}}
b := []Ex{{1, 2}, {3, 4}}
c := []*Ex{&Ex{1, 2}, &Ex{3, 4}}
d := []*Ex{{1, 2}, {3, 4}}
e := []*Ex{{1, 2}, &Ex{3, 4}}

a 및 b의 경우, 다음 인스턴스로 슬라이스를 초기화합니다. 단축 구문을 사용하는 Ex 구조체:

f := []<type>{{...}, {...}}

이것은 다음과 같습니다.

f := []<type>{<type>{...}, <type>{...}}

c, d, e의 경우 구문에 대해 좀 더 설명이 필요합니다. 초기화:

f := []*<type>{{...}, {...}}

다음과 유사합니다:

f := []*<type>{&<type>{...}, &<type>{...}}

즉, 유형 뒤의 중괄호는 해당 유형의 구조체에 대한 값을 지정하고 앰퍼샌드는 포인터를 생성합니다.

마지막으로 다음 코드에서는 구문 오류가 발생합니다.

f := []*Ex{&{1, 2}, &{3, 4}} // Syntax Error!

중괄호 뒤에는 유형 이름이 아닌 유형 이름이 와야 하기 때문입니다. 익명 구조체. 올바른 구문은 다음과 같습니다.

f := []*Ex{&Ex{1, 2}, &Ex{3, 4}}

위 내용은 Go에서 구조체에 대한 포인터 조각을 초기화하는 방법: 익명 구조체 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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