gpt4 book ai didi

go - 执行不接受参数的方法

转载 作者:IT王子 更新时间:2023-10-29 02:27:05 24 4
gpt4 key购买 nike

给定结构的任意实例,我希望能够执行其所有不接受参数的公共(public)方法。

例如在下面的代码中,我希望能够在不知道 X{}.Foo() 和 X{}.Bar() 存在的情况下执行它们。

package main

import (
"fmt"
"reflect"
)

type X struct {
Y string
}

func (x X) Foo() string {
return x.Y
}

func (x X) Bar() {
}

func (x X) Baz(q string) {
}

func main() {
fooType := reflect.TypeOf(X{})
for i := 0; i < fooType.NumMethod(); i++ {
method := fooType.Method(i)
fmt.Println(method.Name)
}
}

最佳答案

  1. 更改 reflect.TypeOfreflect.ValueOf
  2. 检查 typeMethod确保接受零参数
  3. Call调用方法
foo := reflect.ValueOf(X{})
for i := 0; i < foo.NumMethod(); i++ {
method := foo.Method(i)
if method.Type().NumIn() == 0 {
method.Call(nil)
}
}

https://play.golang.org/p/KYAfaFlEjVt

关于go - 执行不接受参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com