登录
首页 >  Golang >  Go问答

执行不接受参数的方法

来源:stackoverflow

时间:2024-04-21 21:54:24 427浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《执行不接受参数的方法》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

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

例如,在下面的代码中,我希望能够在不知道 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.TypeOf 更改为 reflect.ValueOf
  2. 检查 Methodtype,确保它接受零个参数
  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

理论要掌握,实操不能落!以上关于《执行不接受参数的方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>