【问题标题】:Go return error along with interface from a functionGo 返回错误以及函数的接口
【发布时间】:2020-04-07 23:09:08
【问题描述】:

有没有办法通过 golang 中的函数接口返回错误?

func abc(ctx context.Context, call func() error) (interface{}, err) {

类似于上面的原型?要求是我传递一个可以接受多种输入数据类型并返回该特定数据类型的函数。

谢谢!

【问题讨论】:

  • 你试过什么?为什么您认为将interface{}error 一起返回会有问题?

标签: go interface


【解决方案1】:
package main

import (
    "fmt"
    "errors"
)

func return_something() (interface{}, error) {
    return 123, errors.New("this is an error")
}

func main() {
    fmt.Println(return_something())
}

123 this is an error

https://play.golang.org/p/qqy1-Tn0yBy

请注意: Go 的一位创造者 Rob Pike 曾表示,空界面是 Go 被滥用最多的特性之一,许多 SO 问题都是由于使用不当造成的。确保您已经考虑过空接口是否真的适合您的用例

【讨论】:

    【解决方案2】:

    是的,您的回调函数可以接受多个输入和多个返回值。 试试函数闭包是否适合你。

    Closures

    这是使用回调的一种方式,有多种使用方式。

    https://play.golang.org/p/_4dQwJ_jPSD

    尝试映射map中的函数,并配合key使用

    尝试将函数分配给函数类型等

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 2019-05-10
      • 2017-01-25
      • 1970-01-01
      • 2018-08-05
      • 2023-02-21
      • 2019-05-21
      • 2019-09-27
      • 1970-01-01
      相关资源
      最近更新 更多