gpt4 book ai didi

go - 如何返回空接口(interface)类型映射的键值

转载 作者:行者123 更新时间:2023-12-01 22:38:27 25 4
gpt4 key购买 nike

我采用了像 var u = make(map[string]interface{}) 这样的变量这意味着一个键可以保存一个字符串/整数或另一个映射。

当我执行以下操作时,它会给出错误 cannot use v (type interface {}) as type string in return argument: need type assertion这看起来很明显,因为通用 map 不知道应该搜索什么。我该如何解决这个问题?代码如下(请注意,目前 map 完全为空)

var u = make(map[string]interface{})

// Get function retrieves the value of the given key. If failed, it returns error.
func Get(k string) (string, error) {
v, found := u[k]
println(reflect.Type(v))
if found {
v = u[k]
return v, nil
}
return v, errors.New(-1)
}

最佳答案

v, found := u[k]这里 v 是 interface{}类型

但是您的函数返回类型是 (string, nil) 您返回 (v, nil) 或 (interface{}, nil)。
interface{}不能自动转换成字符串,需要类型断言。

data, ok := v.(string)

您可以返回 interface{}此外,消费者可以决定它将转换哪种类型。

关于go - 如何返回空接口(interface)类型映射的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61251233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com