Closed3

[Golang] interface実装検証

junya0530junya0530

以下のようなディレクトリ構成を作成

test
├── go.mod
├── main.go
└── pkg
    └── cals.go
junya0530junya0530

以下の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
}
junya0530junya0530
  1. Cals interfaceをCalFuncで実装
  2. cals.goの構造体NumTypeにデータ代入
  3. Cals interfaceにNumTypeを代入
  4. Cals.NumType.CalTest()で関数が呼び出せるようになる。
go run main.go
[result]: 15
このスクラップは2022/10/31にクローズされました