错误“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中文网其他相关文章!