Re: [問題] Golang型態轉換

作者: s25g5d4 (function(){})()   2023-02-08 22:46:58
※ 引述《umaka0325 (Umaka)》之銘言:
: 最近在摸索Go的相關語法碰到一些問題想請教一下
: 程式碼如下:
: type Person struct {
: Name string
: Age int
: }
: func test1(p *Person) {
: p.Name = "123"
: }
: func test(p any) {
: test1(p.(*Person))
: ^^^^^^^^
: }
: 想請問底線部分的*Person這個結構有什麼辦法從輸入p any動態產生嗎?
: 謝謝!!
初學者常常希望能存取不特定型別的共同欄位
不過... https://tenor.com/bhDEJ.gif
正常的寫法都是改寫成 interface
type Person interface {
GetName() string
GetAge() int
}
type person struct {
Name string
Age int
}
func (p *person) GetName() string {
return p.Name
}
func (p *person) GetAge() int {
return p.Age
}
func test(p Person) {
otherfunc(p.GetName(), ...)
otherfunc(p.GetAge(), ...)
}
func callTest() {
pe := &person{
Name: "John Doe",
Age: 20,
}
test(pe)
}
對,golang 的 interface 就是如此繁瑣

Links booklink

Contact Us: admin [ a t ] ucptt.com