[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 언어에서의 구조체는 다양한 필드를 묶어 새로운 데이터 타입을 정의하고, 필요한 경우에는 다른 구조체를 포함하여 유연한 데이터 모델을 만들 수 있게 해줍니다.
참고 문헌:
- https://tour.golang.org/methods/9
- https://gobyexample.com/structs