在 Go 中將介面轉換為具體型別

Jay Singh 2022年4月22日
在 Go 中將介面轉換為具體型別

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!

相關文章 - Go Conversion