Golang-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増加していることがわかる.
Reference
この問題について(Golang-12:メソッド), 我々は、より多くの情報をここで見つけました
https://velog.io/@phoenix/Go-lang-12-메서드
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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())
}
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())
}
Reference
この問題について(Golang-12:メソッド), 我々は、より多くの情報をここで見つけました https://velog.io/@phoenix/Go-lang-12-메서드テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol