[go] 구조체(struct)의 포인터 사용 방법
구조체(struct)는 관련된 데이터를 묶어 하나의 자료형으로 정의하는 방법이다. 구조체를 사용하면 하나의 변수 안에 여러 개의 변수를 담을 수 있으므로 더 복잡한 데이터를 다룰 때 유용하게 사용할 수 있다. 이번 글에서는 구조체의 포인터를 사용하는 방법에 대해 알아보도록 하겠다.
구조체 포인터 선언
구조체의 포인터를 선언하는 방법은 일반 변수와 유사하다. 다음은 구조체 포인터를 선언하는 예시이다.
type Person struct {
name string
age int
}
func main() {
var p *Person
// 구조체 포인터 p 초기화
// 포인터를 통해 구조체 필드 값 설정
p = &Person{
name: "John Doe",
age: 30,
}
// 포인터를 통해 구조체 필드 값 접근
fmt.Println("이름:", p.name)
fmt.Println("나이:", p.age)
}
위의 코드에서 p *Person
은 구조체 포인터를 선언하는 부분이다. 이 포인터는 Person
구조체 타입의 변수를 가리킬 수 있는 포인터이다.
구조체 포인터 초기화
구조체 포인터를 초기화하는 방법은 두 가지가 있다. 첫 번째는 구조체의 필드 값을 직접 지정하는 것이고, 두 번째는 new() 함수를 사용하는 것이다. 아래는 두 가지 방법을 모두 사용한 예시이다.
type Person struct {
name string
age int
}
func main() {
var p *Person
// 방법 1: 구조체 포인터 초기화 (필드 값 직접 지정)
p = &Person{
name: "John Doe",
age: 30,
}
// 방법 2: 구조체 포인터 초기화 (new() 함수 사용)
p = new(Person)
p.name = "Jane Smith"
p.age = 25
fmt.Println("이름:", p.name)
fmt.Println("나이:", p.age)
}
구조체 포인터로 필드 값 접근
구조체 포인터를 통해 필드에 접근하는 방법은 일반적인 포인터의 접근 방식과 동일하다. 포인터 연산자 ->
를 사용하여 필드에 접근할 수 있다. 아래의 예시 코드를 참고하자.
type Person struct {
name string
age int
}
func main() {
var p *Person
p = &Person{
name: "John Doe",
age: 30,
}
// 포인터를 통해 구조체 필드 값 접근
fmt.Println("이름:", p.name)
fmt.Println("나이:", p.age)
// 포인터를 통해 구조체 필드 값 변경
p.name = "Jane Smith"
p.age = 25
fmt.Println("이름:", p.name)
fmt.Println("나이:", p.age)
}
위의 예시 코드에서는 구조체 포인터 p
를 통해 name
과 age
필드의 값을 접근하고 변경하는 방법을 보여준다.
구조체의 포인터 사용 방법에 대해 알아보았다. 구조체 포인터를 사용하면 구조체 변수를 효과적으로 다룰 수 있으므로, 복잡한 데이터 처리에 활용할 수 있다. 구조체 포인터를 잘 활용하여 프로그래밍을 하면 보다 유연하고 효율적인 코드를 작성할 수 있을 것이다.