[go] 구조체(struct)의 초기화 방법

구조체는 여러 개의 다양한 데이터 타입을 하나의 논리적 단위로 묶어서 사용할 수 있는 자료형입니다. 구조체를 사용할 때 초기화 방법은 매우 중요한데, 여러 가지 방법을 소개하겠습니다.

1. 필드 이름을 사용하여 초기화

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{Name: "John", Age: 20}
    fmt.Println(p)
}

이 방법은 구조체의 각 필드에 대해 필드 이름을 명시하여 초기화하는 방법입니다. 필드의 순서와 상관없이 값을 지정할 수 있으며 가독성이 좋습니다.

2. 필드 순서에 따라 초기화

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{"John", 20}
    fmt.Println(p)
}

이 방법은 구조체의 필드 순서에 맞춰 값을 초기화하는 방법입니다. 필드를 순서대로 나열하고 값을 넣어주면 됩니다. 이 방법은 간단하지만 필드의 순서를 정확히 알아야 하므로 가독성이 낮을 수 있습니다.

3. 구조체 인스턴스 생성 후 필드 값 변경

type Person struct {
    Name string
    Age  int
}

func main() {
    var p Person
    p.Name = "John"
    p.Age = 20
    fmt.Println(p)
}

이 방법은 구조체를 먼저 생성한 후 각 필드의 값을 개별적으로 변경하는 방법입니다. 필드 값 변경 시에는 . 연산자를 사용하여 접근합니다. 이 방법은 구조체의 일부 필드만 초기화하고 싶을 때 유용합니다.

4. new() 함수 사용하여 초기화

type Person struct {
    Name string
    Age  int
}

func main() {
    p := new(Person)
    p.Name = "John"
    p.Age = 20
    fmt.Println(*p)
}

이 방법은 new() 함수를 사용하여 구조체를 동적으로 할당하고 이를 초기화하는 방법입니다. new() 함수는 할당된 구조체 포인터를 반환하므로 필드에 접근할 때는 * 연산자를 사용하여 포인터를 역참조해야 합니다. 이 방법은 구조체를 포인터로 사용해야 할 때 유용합니다.

이렇게 구조체를 초기화하는 방법은 다양하며, 상황에 따라 적절한 방법을 선택하여 사용하면 됩니다.


참고 문서: