[go] 구조체(struct)의 getter와 setter 함수 구현 방법

1. Getter 함수 구현하기

구조체의 필드 값을 가져오기 위해 Getter 함수를 구현할 수 있습니다.

package main

import "fmt"

type Person struct {
    name string
    age  int
}

func (p Person) GetName() string {
    return p.name
}

func (p Person) GetAge() int {
    return p.age
}

func main() {
    person := Person{"John Doe", 30}
    fmt.Println("Name:", person.GetName())
    fmt.Println("Age:", person.GetAge())
}

위의 예시에서는 Person 구조체의 필드 값들을 가져오기 위해 GetNameGetAge 함수를 각각 구현했습니다.

func (p Person) GetName() string에서 (p Person)은 메소드의 receiver로, Person 구조체에 메소드를 연결시키기 위해 사용합니다. GetName 함수는 name 필드의 값을 반환합니다.

2. Setter 함수 구현하기

구조체의 필드 값을 변경하기 위해 Setter 함수를 구현할 수 있습니다.

package main

import "fmt"

type Person struct {
    name string
    age  int
}

func (p *Person) SetName(newName string) {
    p.name = newName
}

func (p *Person) SetAge(newAge int) {
    p.age = newAge
}

func main() {
    person := Person{"John Doe", 30}
    fmt.Println("Before - Name:", person.name)
    fmt.Println("Before - Age:", person.age)

    person.SetName("Jane Smith")
    person.SetAge(25)

    fmt.Println("After - Name:", person.name)
    fmt.Println("After - Age:", person.age)
}

위의 예시에서는 Person 구조체의 필드 값을 변경하기 위해 SetNameSetAge 함수를 각각 구현했습니다.

func (p *Person) SetName(newName string)에서 (*Person)은 포인터 receiver로, 구조체의 필드 값을 변경하기 위해 메소드를 사용할 때 값을 복사하지 않고 포인터를 참조하기 위해 사용합니다. SetName 함수는 name 필드의 값을 변경합니다.

참고 자료