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












