登录
首页 >  Golang >  Go问答

给切片添加未命名的结构元素

来源:stackoverflow

时间:2024-03-14 10:03:30 144浏览 收藏

一分耕耘,一分收获!既然都打开这篇《给切片添加未命名的结构元素》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

假设我有一段匿名结构

data := []struct{a string, b string}{}

现在,我想向此切片添加一个新项目。

data = append(data, ???)

我该怎么做?有任何想法吗?


解决方案


由于您使用的是匿名结构,因此必须在附加语句中再次使用具有相同声明的匿名结构:

data = append(data, struct{a string, b string}{a: "foo", b: "bar"})

使用命名类型会更容易:

type mystruct struct {
    a string
    b string
}

data := []mystruct{}

data = append(data, mystruct{a: "foo", b: "bar"})

实际上,我找到了一种无需重复类型声明即可向数组添加元素的方法。 但它很脏。

slice := []struct {
        v, p string
    }{{}} // here we init first element to copy it later

    el := slice[0]

    el2 := el   // here we copy this element
    el2.p = "1" // and fill it with data
    el2.v = "2"

    // repeat - copy el as match as you want

    slice = append(slice[1:], el2 /* el3, el4 ...*/) // skip first, fake, element and add actual

指向结构体的指针切片更为传统。在这种情况下,应对方式会略有不同

slice := []*struct { ... }{{}}
    el := slice[0]
    el2 := *el

所有这些都远非任何好的做法。小心使用。

终于介绍完啦!小伙伴们,这篇关于《给切片添加未命名的结构元素》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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