😸

[Go] Embedded

2022/09/25に公開
package main

import (
	"fmt"
)

// 小文字にすると、他のパッケージから呼び出せない。
type Ver struct {
	x, y int
}

func (v Ver) Area() int {
	return v.x * v.y
}

// iというintを引数に取るScale()
func (v Ver) Scale(i int) {
	v.x = v.x * i
	v.y = v.y * i
}


type Ver3 struct {
	// Ver Structのx,yを使いたい。Verとだけ書く。
	Ver
	// 今回新しく追加したいzだけ、Ver3で定義する。
	z int
}

func (v Ver3) Area3() int {
	return v.x * v.y * v.z
}

// iというintを引数に取るScale()
func (v Ver3) Scale3(i int) {
	v.x = v.x * i
	v.y = v.y * i
	v.z = v.z * i
}

// Ver型を引数vに取り、intを返す
func Area (v Ver3) int {
	return v.x * v.y
}

func New(x, y, z int) *Ver3 {
	return &Ver3{Ver{x, y}, z}
}

func main () { 
// v := Ver{1,2}
// fmt.Println(Area(v))
v := New(3, 4, 5)
v.Scale(10)
fmt.Println(v.Area())
fmt.Println(v.Area3())
}

12
60

Discussion