LoginSignup
1
2

More than 5 years have passed since last update.

構造体が持つメソッド名を列挙する

Last updated at Posted at 2017-01-19

構造体が持つメソッド名の列挙

メモついでに φ(..)

環境

バージョン
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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2