登录
首页 >  Golang >  Go问答

有没有更简单的方法来附加结构体切片?

来源:stackoverflow

时间:2024-03-31 08:00:35 345浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《有没有更简单的方法来附加结构体切片?》,涉及到,有需要的可以收藏一下

问题内容

以下代码有效,但我想找到一种更简单的方法来实现它

package main

import "fmt"

type steps []struct {
    i int
    j int
}

func main() {
    steps := steps{}
    type step struct{ i, j int }
    steps = append(steps, step{1, 1}, step{1, 2})
    fmt.println(steps)
}

具体来说,我不想定义一个新类型只是为了将其附加到切片中。例如,我想这样做:

package main

import "fmt"

type steps []struct {
    i int
    j int
}

func main() {
    steps := steps{}
    steps = append(steps, {1, 1}, {1, 2}) // syntax error
    fmt.Println(steps)
}

但是我会收到“语法错误:意外的 {,期望表达式”

我不明白为什么我不能这样做,数据结构是正确的。


解决方案


您在切片中创建了一个匿名结构,因此在添加元素时需要重复该架构:

// works - but a bit tedious...
steps = append(steps,
        struct {
            i int
            j int
        }{1, 1},
        struct {
            i int
            j int
        }{1, 2},
)

或定义子类型:

type step struct {
    i int
    j int
}
type steps []step

steps = append(steps, step{3, 4}, step{5, 6})

playground example

今天关于《有没有更简单的方法来附加结构体切片?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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