Closed3
[Golang] interface実装検証
以下のようなディレクトリ構成を作成
test
├── go.mod
├── main.go
└── pkg
└── cals.go
以下のgoファイルを作成。
main.go
package main
import (
"fmt"
"test/pkg"
)
#####
# 1
#####
type Cals interface {
CalTest(int) int
}
type CalFunc func(i int) int
func (c CalFunc) CalTest(i int) int {
return c(i)
}
func main() {
type t struct {
cal Cals
}
#####
# 2
#####
n := pkg.NumType{
Number: 5,
}
#####
# 3
#####
c := t{
cal: n,
}
#####
# 4
#####
result := c.cal.CalTest(10)
fmt.Println(fmt.Sprintf("[result]: %d", result))
}
cals.go
package pkg
type NumType struct {
Number int
}
func (r NumType) CalTest(i int) int {
return r.Number + i
}
- Cals interfaceをCalFuncで実装
- cals.goの構造体NumTypeにデータ代入
- Cals interfaceにNumTypeを代入
- Cals.NumType.CalTest()で関数が呼び出せるようになる。
go run main.go
[result]: 15
このスクラップは2022/10/31にクローズされました