[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
구조체의 필드 값들을 가져오기 위해 GetName
과 GetAge
함수를 각각 구현했습니다.
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
구조체의 필드 값을 변경하기 위해 SetName
과 SetAge
함수를 각각 구현했습니다.
func (p *Person) SetName(newName string)
에서 (*Person)
은 포인터 receiver로, 구조체의 필드 값을 변경하기 위해 메소드를 사용할 때 값을 복사하지 않고 포인터를 참조하기 위해 사용합니다. SetName
함수는 name
필드의 값을 변경합니다.