티스토리 뷰

Go 언어에서 **구조체(struct)**는 필드(field)로 구성된 사용자 정의 타입입니다.
여러 데이터를 하나의 타입으로 묶어서 사용해야 할 때 구조체를 사용합니다.
구조체는 객체 지향 언어에서 클래스와 유사한 역할을 합니다. 구조체를 선언하고 초기화하는 방법은 여러 가지가 있으며, 아래에 그 방법들을 설명합니다.
Go 언어에서 구조체 초기화하기
1. 구조체 선언
구조체는 type 키워드를 사용하여 선언합니다. 구조체 선언 시에는 필드의 이름과 타입을 정의합니다.
package main
import "fmt"
// Person 구조체 정의
type Person struct {
Name string
Age int
Gender string
}
2. 구조체 인스턴스 초기화 방법
Go에서는 구조체를 초기화하는 다양한 방법이 있습니다.
2.1 기본 리터럴 방식으로 초기화
구조체의 필드 순서대로 값을 지정하여 초기화하는 방식입니다.
package main
import "fmt"
// Person 구조체 정의
type Person struct {
Name string
Age int
Gender string
}
func main() {
// 구조체 인스턴스 생성 및 초기화 (필드 순서대로)
p1 := Person{"Alice", 30, "Female"}
fmt.Println(p1) // 출력: {Alice 30 Female}
}
이 방법은 구조체의 필드 순서가 변경되면 코드가 영향을 받을 수 있습니다. 따라서 필드 순서에 의존하지 않는 명시적 방식이 더 권장됩니다.
2.2 명시적 필드 이름을 사용한 초기화
필드 이름을 명시적으로 지정하여 초기화하는 방법입니다. 필드의 순서와 상관없이 초기화할 수 있습니다.
package main
import "fmt"
// Person 구조체 정의
type Person struct {
Name string
Age int
Gender string
}
func main() {
// 구조체 인스턴스 생성 및 초기화 (명시적으로 필드 지정)
p2 := Person{
Name: "Bob",
Age: 25,
Gender: "Male",
}
fmt.Println(p2) // 출력: {Bob 25 Male}
}
이 방법은 필드의 순서에 상관없이 원하는 필드를 초기화할 수 있어 더 안전하고 가독성이 좋습니다.
2.3 new 키워드를 사용한 초기화
new 키워드를 사용하면 구조체에 대한 포인터를 반환합니다. 이 방법은 구조체의 메모리를 할당하고 필드의 기본값으로 초기화합니다.
package main
import "fmt"
// Person 구조체 정의
type Person struct {
Name string
Age int
Gender string
}
func main() {
// new 키워드를 사용한 구조체 포인터 생성 및 초기화
p3 := new(Person) // 포인터 타입 *Person 반환
// 필드 값을 설정
p3.Name = "Charlie"
p3.Age = 40
p3.Gender = "Male"
fmt.Println(*p3) // 출력: {Charlie 40 Male}
}
이 방법은 구조체의 포인터를 직접 다루어야 할 때 유용합니다.
2.4 빈 구조체 초기화 후 필드 설정
구조체를 먼저 선언하고, 필드를 나중에 개별적으로 설정할 수 있습니다.
package main
import "fmt"
// Person 구조체 정의
type Person struct {
Name string
Age int
Gender string
}
func main() {
// 빈 구조체 선언
var p4 Person
// 필드 값 개별 설정
p4.Name = "David"
p4.Age = 35
p4.Gender = "Male"
fmt.Println(p4) // 출력: {David 35 Male}
}
이 방법은 구조체를 초기화한 후에 필요한 시점에 필드 값을 설정할 수 있습니다.
3. 구조체 초기화 시 주의사항
- 구조체의 필드 이름을 명시적으로 사용하는 초기화 방식은 필드 순서에 영향을 받지 않으므로 코드 유지보수성이 높습니다.
new키워드를 사용하면 구조체의 포인터를 반환하여 메모리 할당을 최적화할 수 있지만, 포인터를 올바르게 관리해야 합니다.- 모든 필드를 초기화하지 않으면 나머지 필드는 해당 타입의 기본값으로 초기화됩니다 (
int는0,string은 빈 문자열""등).
요약
구조체는 다양한 방법으로 초기화할 수 있으며, 사용하는 방식에 따라 코드의 가독성과 안전성이 달라질 수 있습니다. 특정 용도와 상황에 맞는 초기화 방법을 선택하여 사용하면 됩니다.
'프로그래밍 > golang' 카테고리의 다른 글
| Go에서 go build 명령어 사용하는 법 (1) | 2024.09.14 |
|---|---|
| go언어에서 패키지, 다른 패키지의 함수 호출하기 (0) | 2024.09.13 |
| go언어에서 const 상수에 대해 알아보자. (0) | 2024.09.13 |
| go에서 배열 초기화 방법에 대해 알아보자 (0) | 2024.09.13 |
| go에서 fmt 패키지는 뭘까? (0) | 2024.09.13 |
- Total
- Today
- Yesterday
- golang
- ios
- Python
- 오리역
- 내집마련
- Java
- Linux
- 부동산
- react
- 생각
- SWiFT
- Spring
- reactjs
- Backend
- HTML
- 재테크
- JavaScript
- 카톡업데이트
- go
- 프로그래밍
- 주식투자
- 카카오톡
- Frontend
- 부동산분석
- MacOS
- openai
- CSS
- AI
- 개발자
- ChatGPT
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |