首页 >后端开发 >Golang >为什么我的 Go 代码会产生'无法使用函数作为参数类型”以及如何修复它?

为什么我的 Go 代码会产生'无法使用函数作为参数类型”以及如何修复它?

DDD
DDD原创
2024-12-14 07:48:13355浏览

Why Does My Go Code Produce

错误“cannot use function as type in argument”

在提供的 Go 代码中,您尝试将函数作为参数传递到另一个函数,但您遇到错误“无法使用函数(类型 func())作为参数中的类型。”此错误表明您尝试传递的函数类型与参数的预期类型不匹配。

要解决此问题,请确保您传递的函数的签名与预期的参数类型匹配的论点。在您的情况下,您传递的函数采用 MessageDelivery 结构作为参数并返回值和错误。但是,参数的预期类型需要一个采用 MessageDelivery 结构体作为参数并直接返回 interface{} 的函数。

要纠正此问题,请修改您的函数,如下所示:

func UpperCaseHandler(md asl.MessageDelivery) (interface{}, error) {
    s.Reply(MessageTest{strings.ToUpper(md.Message.(string))}, md.Delivery)
    return nil, nil
}

func RepeatHandler(md asl.MessageDelivery) (interface{}, error) {
    s.Reply(MessageTest{strings.Repeat(md.Message.(string), 5)}, md.Delivery)
    return nil, nil
}

通过修改您的函数以直接返回interface{},它们现在将匹配参数的预期类型,并且错误应该得到解决。

以上是为什么我的 Go 代码会产生'无法使用函数作为参数类型”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn