🔥 구조체 리터럴
322자
4분
구조체 리터럴은 구조체의 필드 값을 직접 지정하여 구조체 변수를 생성하는 방법입니다. 중괄호 {}
를 사용하여 필드 값을 나열하며, 필드 이름을 생략하고 순서대로 값을 지정할 수도 있고, 필드 이름을 명시적으로 지정하여 값을 할당할 수도 있습니다.
구조체 리터럴을 사용하면 구조체 변수를 간편하게 초기화할 수 있으며, 필드 값을 명확하게 지정할 수 있어 코드의 가독성을 높일 수 있습니다.
다음 예제 코드를 통해 구조체 리터럴의 사용 방법을 알아봅시다.
package main import "fmt" type Vertex struct { X, Y int } var ( v1 = Vertex{1, 2} // Vertex 타입을 가짐 v2 = Vertex{X: 1} // Y는 암묵적으로 0 v3 = Vertex{} // X와 Y 모두 0 p = &Vertex{1, 2} // *Vertex 타입을 가짐 ) func main() { fmt.Println(v1, p, v2, v3) }
go
위 코드에서 Vertex
구조체를 정의하였습니다. Vertex
구조체는 X
와 Y
라는 두 개의 int
타입 필드를 가집니다.
type Vertex struct { X, Y int }
go
그 다음, 여러 개의 변수를 선언하고 있습니다.
var ( v1 = Vertex{1, 2} // Vertex 타입을 가짐 v2 = Vertex{X: 1} // Y는 암묵적으로 0 v3 = Vertex{} // X와 Y 모두 0 p = &Vertex{1, 2} // *Vertex 타입을 가짐 )
go
v1
은Vertex
타입의 변수로,{1, 2}
로 초기화되었습니다. 이는X
에 1,Y
에 2를 할당한 것과 같습니다.v2
는Vertex
타입의 변수로,{X: 1}
로 초기화되었습니다. 이는X
에 1을 할당하고,Y
는 암묵적으로 0으로 초기화한 것과 같습니다.v3
는Vertex
타입의 변수로,{}
로 초기화되었습니다. 이는X
와Y
모두 0으로 초기화한 것과 같습니다.p
는Vertex
타입의 포인터 변수로,&Vertex{1, 2}
로 초기화되었습니다. 이는Vertex{1, 2}
의 주소를 할당한 것과 같습니다.
마지막으로 main
함수에서는 fmt.Println
을 사용하여 v1
, p
, v2
, v3
를 출력합니다.
func main() { fmt.Println(v1, p, v2, v3) }
go
이 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
{1 2} &{1 2} {1 0} {0 0}
text
이렇게 구조체 리터럴을 사용하면 구조체 변수를 간편하게 선언하고 초기화할 수 있습니다. 필드 이름을 명시적으로 지정하거나 생략할 수 있으며, 초기화되지 않은 필드는 해당 타입의 제로 값으로 자동 초기화됩니다.