構造体が持つメソッド名の列挙
メモついでに φ(..)
環境
バージョン | |
---|---|
macOS | 10.12.2 |
Go | 1.7.3 |
コード
package main
import (
"fmt"
"reflect"
)
// 構造体 その1
type Hoge struct {
hoge string
}
func (h *Hoge) MethodHoge1() {
fmt.Println(h.hoge)
}
func (h *Hoge) MethodHoge2(a int, b int) int {
return a + b
}
// 構造体 その2
type Fuga struct {
fuga string
}
func (f *Fuga) MethodFuga1() {
fmt.Println(f.fuga)
}
func (f *Fuga) MethodFuga2(a int, b int) int {
return a * b
}
func (f *Fuga) MethodFuga3(str string) (string, int) {
f.fuga += str
return f.fuga, len(f.fuga)
}
// 構造体が持つメソッド名を表示
func PrintMethodName(inf interface{}) {
it := reflect.TypeOf(inf)
for i := 0; i < it.NumMethod(); i++ {
fmt.Println(it.Method(i).Name)
}
}
func main() {
var hoge Hoge
var fuga Fuga
PrintMethodName(&hoge)
PrintMethodName(&fuga)
}
出力
MethodHoge1
MethodHoge2
MethodFuga1
MethodFuga2
MethodFuga3