Go
投稿日

【Go】インターフェースのゼロ値

インターフェースのゼロ値はnilです。

インタフェースがnilになる条件について説明します。

インターフェースがnilになる条件

インターフェースがnilになる条件は、インターフェースの型がnilである事です。
以下はnilになります。

package main

import (
	"fmt"
)

// インターフェースの定義
type myInterface interface {
	getName() string
}

func main() {

	// 空インターフェース
	var i interface{}
	fmt.Println(i == nil) // true が表示される

	// ユーザ定義型のインターフェース
	var dog myInterface
	fmt.Println(dog == nil) // true が表示される
}

正確にはインターフェースは、実装される型(具象型)と値で構成され、その両方がnilである場合、インターフェースはnilになるようです。

  • 具象型が存在し、値がnilではないインターフェースはnilではありません。
  • 具象型が存在し、値がnilのインターフェースはnilではありません。
  • 具象型が存在ぜず、値がnilではないことはあり得ません。値が存在することは必ず型が定義されている状態になります。
  • 具象型が存在ぜず、値がnilのインターフェースはnilになります。

インタフェースとメソット

インターフェースがnilではない場合、メソットが実行できます。
インタフェースの具象型が存在すれば、値がnilであってもメソットは実行できます。
言い換えると、メソットが実行できないインターフェースはnilになります。

コメントを残す

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

© DeNnie.Lab All Rights Reserved.