登录
首页 >  Golang >  Go问答

如何将参数返回给 Go 中的另一个函数?

来源:stackoverflow

时间:2024-04-27 22:03:35 133浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《如何将参数返回给 Go 中的另一个函数?》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我正在尝试创建一个接受并返回任意数量参数的函数。我遇到了匿名函数:

func awsapiretry(awsfunc func()) {
        return awsfunc()
    }

这允许我调用一个函数:

awsapiretry(func() {
                    getenvstate(sess, applicationname, envname)
                })

但是当我尝试从 getenvstate 检索返回值时(字符串,错误):

ElbReady, err := AWSApiRetry(func() {
                GetEnvState(sess, ApplicationName, EnvName)
            })

我收到错误:awsapiretry(funcliteral) 用作值

如何使用 awsapiretry 函数匿名返回这些类型。它可以是任意数量和类型的返回值,因此它只是某种“传递”并返回被调用的函数返回的任何内容。


解决方案


这个问题大约有一年了,但没有人正确识别出问题:AWSApiRetry() 函数签名没有返回值。您不能为没有返回值的函数分配返回值。

您想要提供的实际 API(定义具有任意签名的函数)可以使用标准反射包中的函数 MakeFunc() 来完成。

如果您想更具体地了解您观察到的需求,我很乐意提出具体的解决方案。

您不能。

据我所知,目前的形式,go 是静态类型的。您想要做的是创建一个函数/方法,该函数/方法返回在编译时未知的类型。按照设计,go 不允许您创建这样的函数/方法

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何将参数返回给 Go 中的另一个函数?》文章吧,也可关注golang学习网公众号了解相关技术文章。

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