栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang:结构切片之间的类型转换

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang:结构切片之间的类型转换

您当前正在处理两种不同的类型:

type Societe struct {    Name string}

和匿名的:

struct {    Name string `json:"a.name"`}

如果不是标记,那么这两个将是相同的。在
围棋规格
的状态(我的重点):

如果两个struct类型具有相同的字段序列,并且对应的字段具有相同的名称,相同的类型 和相同的tag ,则它们是 相同的
。两个匿名字段被认为具有相同的名称。来自不同软件包的小写字段名称始终是不同的。

因此,您无法在两者之间进行简单的转换。另外,转换两种类型的 切片 的事实使转换成为问题。我可以为您看到两个选择:

通过迭代复制:

这是安全且推荐的解决方案,但它也比较冗长和缓慢。

ls := make(ListSociete, len(res))for i := 0; i < len(res); i++ {     ls[i].Name = res[i].Name}return ls, nil

不安全的转换:

由于两种类型都具有相同的基础数据结构,因此可能会进行不安全的转换。
但是,这可能稍后会炸掉。 被警告!

return *(*ListSociete)(unsafe.Pointer(&res)), nil

游乐场示例: http //play.golang.org/p/lfk7qBp2Gb



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446395.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号