您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

Go 2022/1/1 18:13:59 有624人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶