embedded(継承)・struct以外についてのメソッド【夏休みにGo vol.21】

こんにちは、しーたです。
今日はembedded(継承)とstruct以外についてのメソッドについて学んでいきます。


embedded(継承)

他のstructの要素を含んだ新しいstructを定義することです。
他の言語ではよく継承と呼ばれます。

以下の例ではVector2Dの要素をembeddedしてVector3Dを定義しています。
※コンストラクタにも注目です。

type Vector2D struct {
	x, y int
}

type Vector3D struct {
	Vector2D //embedded(継承)
	z        int
}

func (v Vector3D) getLength() float64 {
	return math.Sqrt(float64(v.x*v.x + v.y*v.y + v.z*v.z))
}

func New(x, y, z int) *Vector3D { //コンストラクタ
	return &Vector3D{Vector2D{x, y}, z} //embedded
}

func main() {
	v1 := New(1, 2, 3)
	fmt.Println(*v1)
	fmt.Println(v1.getLength())
}

画像1


struct以外についてのメソッド

structについてのメソッドは前回扱いました。
intやfloatなどの普通の型についても、一変数のみを持つstructを定義することで以下のようにメソッドを記述することができます。
※メソッドの基本についてはこちら<vol.20 メソッド・コンストラクタ>

type MyInt int

func (i MyInt) Scale(x int) int {
	return int(i) * x
}

func main() {
	a := MyInt(3)
	fmt.Println(a.Scale(2))
}

画像2


以上です。それでは!

いいなと思ったら応援しよう!