0
Help us understand the problem. What are the problem?

posted at

Goのインターフェースについての備忘録

インターフェイスとは?

変数の値だけでなく、 変数の型情報 も同時に保持することができる言語組み込みの 特殊な構造体 のこと。

どんな時に使うの?

いろいろな型の変数を引数として受け取ることのできる汎用的な関数を書くときに使う!(使い方の一つ)

Go言語は静的型付け言語なので、変数宣言の際に変数の型を宣言しないといけない。

しかし、これでは汎用的な関数を書く際に引数に来る可能性のある型の数だけ関数を作成しなければならない。

インターフェースは任意の型の変数を格納できるので、汎用的な関数をひとつ書くだけでよくなる!

インターフェースの宣言

interface.go
var i interface{}

a := 1
i = a
fmt.Println(i) // 1

b := "str"
i = b
fmt.Println(i) //str

格納されている型を調べる

格納されている型ごとにごにょごにょしたい場合は以下のような方法で型が取得できる。

type.go
import (
	"fmt"
	"reflect"
)

func Type(t interface{}) {
	fmt.Println(reflect.TypeOf(t))
}


func interface_test() {
	var i1, i2 interface{}

	i1 = 1
	i2 = "str"

	Type(i1) //int
	Type(i2) //string
}

まとめ

今回はGo言語の特殊な構造体であるインターフェースについてまとめた。
まだ具体的にどのように使うのかイメージがついていないところがあるのでアプリの作成などを行って理解を深めていきたい。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?