類型斷言有點像向下轉型,接口類型轉到具體的實現實例類型上
類型斷言是一個使用在接口值上的操作。語法上它看起來像x.(T)被稱為斷言類型,這里x表示一個接口的類型和T表示一個類型
package main
import (
"fmt"
)
//定義一個接口
type Person interface {
Say()
}
//定義一個類型
type Tsh struct {
name string
}
//實現接口的方法
func (tsh *Tsh) Say() {
fmt.Println("我是 Tsh類型的方法,我是", tsh.name)
}
//測試方法
//傳遞的參數是Person類型
func test(p Person) {
//注意:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//如果要使用它的實現實例Tsh的name屬性,那么就需要類型斷言
name := p.(*Tsh).name
fmt.Println(name)
}
func main() {
//實例化
tsh := Tsh{
name: "陶士涵",
}
//傳入測試方法
test(&tsh)
}
