【GO】Golang ~ 基本編 / インターフェイス ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/04/12/145237
https://dk521123.hatenablog.com/entry/2020/04/03/000000
https://dk521123.hatenablog.com/entry/2020/04/05/000000
https://dk521123.hatenablog.com/entry/2021/05/01/000000

の続き。

気になる文法事項で、以下の通り。
~~~~~~~~~~~~~~~~~~
・構造体
・ポインタ/アドレス
・インターフェイス
・並列プログラミング(ゴールーチン/チャネル)
etc...
~~~~~~~~~~~~~~~~~~

今回は、「インターフェイス(interface)」を扱う。
なお、実行環境は、以下のサイトで気軽にできる。

https://play.golang.org/

目次

【1】インターフェイス
【2】サンプル

【1】インターフェイス

* Java などのインターフェイスとは、やや面持ちが違う

構文

type 型名 interface {
  メソッド名(引数の型, ...) (返り値の型, ...)
  ...
}

【2】サンプル

package main

import "fmt"

// Interface
type Introducer interface {
  Introduce()
}

// Struct
type Person struct {
  Name string
  Age  int
}

func (p Person) Introduce() {
  fmt.Printf("I am %v. I'm %v.\n", p.Name, p.Age)
}

func IntroduceAll(introducers ...Introducer) {
  for i := 0; i < len(introducers); i++ {
    introducers[i].Introduce()
  }
}

func main() {
  personA := Person{"Mike", 23}
  personB := Person{"Tom", 31}

  IntroduceAll(personA, personB)
}

出力結果

I am Mike. I'm 23.
I am Tom. I'm 31.

参考文献

https://dev.classmethod.jp/articles/golang-6/

関連記事

Golang ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2020/04/03/000000
Golang ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/04/12/145237
Golang ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/05/000000
Golang ~ 基本編 / 関数 ~
https://dk521123.hatenablog.com/entry/2021/05/03/000000
Golang ~ 基本編 / ポインタ/アドレス ~
https://dk521123.hatenablog.com/entry/2021/05/02/000000
Golang ~ 基本編 / 構造体 ~
https://dk521123.hatenablog.com/entry/2021/05/01/000000