Go

【Go】空インターフェース

Goは静的型付け言語ですが、何でもありな型を定義できます。

空インターフェース例

以下は空インターフェースを使用して異なる型を使用している例になります。見ての通り、intでもstringでも変数に値を代入する事ができます。

package main

import (
	"fmt"
)

func main() {

	var i interface{}

	i = 1
	fmt.Println(i) // 1 が表示される

	i = "イチ"
	fmt.Println(i) // "イチ" が表示される

	i = []string{"イチ", "ニ"}
	fmt.Println(i) // ["イチ" "ニ"] が表示される
}

利用例

ファイル読みのように型が不明な場合、空インターフェースが使用される事があるようです。

{
    "Name": "sample_name",
    "Events": [
        {
            "Age": 18
        }
    ]
}
package main

import (
	"encoding/json"
	"fmt"
	"os"
)

func main() {

	data := map[string]any{}

	// ファイル読み込み
	f, err := os.Open("sample.json")
	if err != nil {
		return
	}

	// デコード
	json.NewDecoder(f).Decode(&data)

	// 結果を表示
	fmt.Println(data) // map[Events:[map[Age:18]] Name:sample_name] が表示される
}

コメントを残す

メールアドレスが公開されることはありません。

© DeNnie.Lab All Rights Reserved.