[go] 구조체(struct)를 포인터로 전달하는 방법

Go 언어에서는 구조체(struct)를 포인터로 전달하여 효율적인 메모리 사용과 변경 가능한 값을 갖도록 할 수 있습니다. 이 방법을 사용하면 함수 내에서 구조체의 필드 값을 변경할 수 있으며, 구조체의 크기가 큰 경우 메모리 소비를 줄일 수 있습니다.

다음은 구조체 포인터를 전달하는 예시입니다.

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{Name: "John", Age: 30}

    // 구조체 포인터 생성
    pp := &p

    // 구조체 포인터를 함수에 전달
    changeAge(pp)

    fmt.Println(p.Age) // 결과: 40
}

// 구조체 포인터를 받는 함수
func changeAge(person *Person) {
    // 구조체 포인터를 통해 필드 값을 변경
    person.Age = 40
}

이 예시에서는 Person이라는 구조체를 정의하고, main 함수에서 구조체의 필드 값을 초기화한 후, 구조체 포인터를 생성하고 함수에 전달합니다. 함수 changeAge에서는 구조체 포인터를 통해 필드 값을 변경합니다. 마지막으로 main 함수에서 변경된 필드 값을 출력합니다.

구조체 포인터를 사용함으로써 함수 내에서 구조체의 필드 값을 변경할 수 있으며, 메모리 소비를 줄일 수 있습니다. 이러한 방법은 Go 언어에서 구조체를 효과적으로 사용할 때 유용한 기법입니다.

더 많은 정보는 Go 언어 공식 문서를 참고하시기 바랍니다.