在 Go 中將介面轉換為具體型別
Jay Singh
2022年4月22日
Go 語言的介面與其他語言的介面不同。介面是 Go 語言中的一種型別,用於表示一個或多個方法簽名的集合。
它是抽象的;因此,你不能構造它的例項。但是,你可以建立一個介面型別變數,可以為它分配一個包含介面所需方法的具體型別值。
或者,換一種說法,介面既是一組方法,也是一個自定義型別。
本教程將演示如何在 Go 中將介面轉換為具體型別。
在 Go 中將介面轉換為具體型別
.(type)
運算子對於將介面型別物件轉換為具體型別很有用。型別可實現的方法簽名的集合構成了一個介面。
在這個例子中,我們建立了一個 Person
介面型別物件。我們將 Jay Singh
作為 Person
新增到介面物件中,編寫一個將物件從介面型別轉換為具體型別的方法,訪問介面物件型別的資料,並顯示我們的結果。
package main
import "fmt"
type Person struct {
firstName string
lastName string
}
func main() {
person := Person{
firstName: "Jay",
lastName: "Singh",
}
printIfPerson(person)
}
func printIfPerson(object interface{}) {
person, ok := object.(Person)
if ok {
fmt.Printf("Hello %s!\n", person.firstName)
}
}
輸出:
Hello Jay!