Go lang - 12 : 메서드
메서드 형태
func에 추가적으로 리시버를 명시해준다
아래 func 뒤에 (d Duck) 부분이 리시버이다.
여기서 리시버를 포인터로 받거나 값을 받는 경우가 있다
포인터를 받으면 리시버가 가진 값이 변경될 수 있고
아니라면 값으로 받으면 된다.
값 리시버
package main
import "fmt"
type Duck struct {
Name string
Age int
Sound string
}
func (d Duck) String() string { // 메서드
return fmt.Sprintf("%s, age %d, sound is %s ", d.Name, d.Age, d.Sound)
}
func main() {
d := Duck{
"오리",
13,
"꽥꽥",
}
fmt.Println(d.String())
}
Console
포인터 리시버
package main
import "fmt"
type Duck struct {
Name string
Age int
Sound string
}
func (d Duck) String() string {
return fmt.Sprintf("%s, age %d, sound is %s ", d.Name, d.Age, d.Sound)
}
func (d *Duck) AddYear(i int) { // 포인터 리시버
d.Age = d.Age + i
}
func main() {
d := Duck{
"오리",
13,
"꽥꽥",
}
d.AddYear(5) // Age에 5를 더한다.
fmt.Println(d.String())
}
Console
Age 값이 5 증가한 것을 볼 수 있다.
Author And Source
이 문제에 관하여(Go lang - 12 : 메서드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@phoenix/Go-lang-12-메서드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)