+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > 有没有更简单的方法来附加结构体切片? >

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

时间:2024-04-06 14:42:09

本篇文章来介绍《有没有更简单的方法来附加结构体切片?》,涉及到,有需要的可以收藏一下

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

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})

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title