Go言語でもインターフェースが利用出来ます。
今回はとりあえず使用してみましょう。
インターフェースの特徴
Goのインターフェースの特徴は簡単に言うと以下の通りです
- インターフェースは型です。typeキーワードを使用して定義できます。
- インターフェースで使用するメソッドを定義します。(メソッドリストと言う)
- インターフェースは暗黙的に実装されます。
インターフェースの定義
インターフェースは型です。typeキーワードを使用して定義します。また、使用するメソッド(メソッドリスト)を定義します。
// インターフェースの定義
type myInterface interface {
// 必要なメソットを記載する(メソッドリスト)
getName() string
getAge() int
}
インターフェースの実装
Goではインターフェースで定義されたメソッドを実装すると、暗黙的にインターフェースを実装した事になります。javaやphpのように明示的(implements)にインタフェースを指定しません。
以下は、インターフェースを実装し、使用してみました。
package main
import (
"fmt"
)
// インターフェースの定義
type myInterface interface {
// 必要なメソッドを記載する(メソッドリスト)
getName() string
getAge() int
}
// 構造体の定義
type myStruct struct {
name string
age int
}
// メソッド定義
func (m myStruct) getName() string {
return m.name
}
func (m myStruct) getAge() int {
return m.age
}
func main() {
// 定義した構造体の変数宣言
var parson myStruct
// フィールドへのアクセス。値を設定。
parson.name = "名前"
parson.age = 20
fmt.Println(parson.getName()) // "名前" が表示される。
fmt.Println(parson.getAge()) // 20 が表示される。
}