Go のコンクリートタイプへのキャストインターフェイス

Jay Singh 2022年8月23日
Go のコンクリートタイプへのキャストインターフェイス

Go 言語のインターフェースは、他の言語のインターフェースとは異なります。インターフェイスは、1つ以上のメソッドシグネチャのコレクションを表現するために使用される Go 言語のタイプです。

それは抽象的なものです。したがって、そのインスタンスを作成することはできません。ただし、インターフェイスタイプ変数を確立することは許可されています。この変数には、インターフェイスに必要なメソッドを含む具体的なタイプ値を割り当てることができます。

または、別の言い方をすれば、インターフェースは一連のメソッドとカスタムタイプの両方です。

このチュートリアルでは、Go でインターフェイスを具象型にキャストする方法を示します。

Go のコンクリートタイプへのキャストインターフェイス

.(type) 演算子は、インターフェイスタイプのオブジェクトを具象型に変換するのに役立ちます。タイプの実装可能なメソッドシグネチャのコレクションがインターフェイスを構成します。

この例では、Person インターフェースタイプのオブジェクトを作成します。Jay SinghPerson としてインターフェイスオブジェクトに追加し、オブジェクトをインターフェイスタイプから具象タイプに変換するメソッドを記述し、インターフェイスオブジェクトタイプのデータにアクセスして、結果を表示します。

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