😸
[Go] Embedded
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