1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Posted at

インターフェイスとは?

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

どんな時に使うの?

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

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?