[go] 구조체 데이터 타입

Go 프로그래밍 언어는 구조체(struct)라는 데이터 타입을 제공하여 다양한 필드를 묶어 관리할 수 있도록 합니다. 구조체는 다른 데이터 타입들을 조합하여 새로운 타입을 정의할 수 있게 해줍니다.

구조체 (Struct) 정의하기

구조체는 type 키워드를 사용하여 정의할 수 있습니다. 각 필드는 이름과 데이터 타입으로 정의됩니다.

type Person struct {
    Name string
    Age  int
    City string
}

위의 예제에서는 Person이라는 구조체를 정의했습니다. 이 구조체는 Name이라는 문자열, Age라는 정수, City라는 문자열 필드를 갖게 됩니다.

구조체 인스턴스 생성하기

구조체를 정의한 후에는 이를 이용하여 인스턴스를 생성할 수 있습니다. 아래와 같이 Person 구조체를 사용하여 인스턴스를 생성할 수 있습니다.

p := Person{Name: "Alice", Age: 30, City: "New York"}

구조체의 필드는 인스턴스.필드명 형태로 접근할 수 있습니다.

fmt.Println(p.Name) // 출력: Alice
fmt.Println(p.Age)  // 출력: 30
fmt.Println(p.City) // 출력: New York

구조체 임베딩 (Embedding)

구조체는 다른 구조체를 필드로 포함할 수 있습니다. 이를 통해 상속과 유사한 기능을 구현할 수 있습니다. 아래의 예제는 Address 구조체를 Person 구조체에 임베딩한 예제입니다.

type Address struct {
    City    string
    ZipCode int
}

type Person struct {
    Name    string
    Age     int
    Address // Address 구조체를 임베딩
}

p := Person{Name: "Bob", Age: 25, Address: Address{City: "San Francisco", ZipCode: 12345}}

fmt.Println(p.City)    // 출력: San Francisco
fmt.Println(p.ZipCode) // 출력: 12345

이처럼 Go 언어에서의 구조체는 다양한 필드를 묶어 새로운 데이터 타입을 정의하고, 필요한 경우에는 다른 구조체를 포함하여 유연한 데이터 모델을 만들 수 있게 해줍니다.


참고 문헌: