go反射获取func入参及其返回值类型

package main

import (
	"fmt"
	"reflect"
)

type A struct{}

func (a *A) Hello(v1 int, v2 string) (int, string, error) {
	fmt.Println("hello I am A")
	return 0, "", nil
}

func main() {
	a := A{}

	m0 := reflect.TypeOf(&a).Method(0).Type
	for i := 0; i < m0.NumIn(); i++ {
		fmt.Println("参数:", m0.In(i))
	}

	for i := 0; i < m0.NumOut(); i++ {
		fmt.Println("返回值:", m0.Out(i))
	}

	fmt.Println(m0)
}

参数: *main.A
参数: int
参数: string
返回值: int
返回值: string
返回值: error
func(*main.A, int, string) (int, string, error)

由此发现,方法的第0个参数是接收者本身

你可能感兴趣的:(Go,golang)