登录
首页 >  Golang >  Go问答

在 Go 中按名称调用结构及其方法?

来源:Golang技术栈

时间:2023-03-05 10:42:52 262浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《在 Go 中按名称调用结构及其方法?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下golang,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我在MethodByName()这里找到了一个函数调用http://golang.org/pkg/reflect/#Value.MethodByName但这并不是我想要的!(也许是因为我不知道如何使用它......我找不到任何例子)。我想要的是:

type MyStruct struct {
//some feilds here
} 
func (p *MyStruct) MyMethod { 
    println("My statement."); 
} 

CallFunc("MyStruct", "MyMethod"); 
//print out "My statement." 

所以我想,首先我需要类似的东西StructByName(),然后用它来做,对吗MethodByName()!?

正确答案

要调用对象的方法,首先使用reflect.ValueOf. 然后通过名字找到方法,最后调用找到的方法。例如:

package main

import "fmt"
import "reflect"

type T struct {}

func (t *T) Foo() {
    fmt.Println("foo")
}

func main() {
    var t T
    reflect.ValueOf(&t).MethodByName("Foo").Call([]reflect.Value{})
}

理论要掌握,实操不能落!以上关于《在 Go 中按名称调用结构及其方法?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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