前提我的golang当前版本不支持泛型
以下代码的doRun函数不用类型断言怎么才能输出PhoneFoo的os属性呢?
package main
// Go 语言接口
import (
"fmt"
)
type PhoneFoo interface {
call()
}
type IPhoneFoo struct {
os string
}
func (iPhone *IPhoneFoo) call() {
fmt.Println("I am iPhone, I can call you!")
}
func doRun(phone PhoneFoo) {
// !!!这里要怎么才输出
// PhoneFoo 的 os属性呢,只能用类型断言吗?
fmt.Println(phone.os)
}
func main() {
iPhone := &IPhoneFoo{os: "apple ios"}
doRun(iPhone)
}
还可以使用反射, 对于 interface 的操作常用 reflect
输出:
string
apple ios
apple ios