類型斷言有點像向下轉型,接口類型轉到具體的實現實例類型上
類型斷言是一個使用在接口值上的操作。語法上它看起來像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) }