登录
首页 >  Golang >  Go问答

将空接口转换为字符串

来源:stackoverflow

时间:2024-02-21 18:33:23 382浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《将空接口转换为字符串》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我有来自地图的值 [令牌代码 id_token],地图类型的值 []interface{}

resp := result["response_types"]

分别是 type []interface{}

我需要将其转换为:clientobj.responsetypes

type client struct{
    responsetypes sqlxx.stringslicepipedelimiter `json:"response_types" db:"response_types"`
}

在 sqlxx 包中

package sqlxx
type StringSlicePipeDelimiter []string

有办法转换吗?


解决方案


要将 []inteface{} 转换为 []string,只需迭代切片并使用类型断言:

// given resp is []interface{}
// using make and len of resp for capacity to allocate the memory in one go
// instead of having the runtime reallocate memory several times when calling append
str := make([]string, 0, len(resp))
for _, v := range resp {
    if s, ok := v.(string); ok {
        str = append(str, s)
    }
}

这里真正的问题是如何最终得到 []interface{} 类型的变量。难道你就没有办法避免吗?查看 stringslicepipedelimiter 类型本身,它具有 scan 方法(将数据库中的值扫描到类型中所需的接口的一部分)right here,所以我不禁想知道为什么你要使用 类型的间歇变量[ ]接口{}

终于介绍完啦!小伙伴们,这篇关于《将空接口转换为字符串》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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