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())
}
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))
}
以上です。それでは!