登录
首页 >  Golang >  Go问答

如何构造切片结构的对象?

来源:stackoverflow

时间:2024-04-08 22:33:38 493浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《如何构造切片结构的对象?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

package main

import (
    "fmt"
)
type demo []struct {
    Text string
    Type string
}
func main() {
    
    d := demo{
        Text: "Hello",
        Type: "string",
    }
    
}

在此代码中,我在声明 demo 结构的对象时遇到错误:

./prog.go:11:3:未定义:文本 ./prog.go:11:9:不能使用“hello”(无类型字符串常量)作为 struct{text string;在数组或切片文字中键入 string} 值 ./prog.go:12:3: 未定义:类型 ./prog.go:12:9:不能使用“string”(无类型字符串常量)作为 struct{text string;在数组或切片文字中键入 string} 值

很明显,因为它不是正常的结构声明,所以请帮助我如何构造 demo 结构的对象?


正确答案


由于您将 demo 声明为匿名结构体切片,因此您必须使用 demo{} 来构造切片,并使用 {text: "hello", type: "string"} 来构造项目。

func main() {
    d := demo{{
        text: "hello",
        type: "anon",
    }}

    fmt.println(d)
    // [{hello anon}]
}

作为切片,您也可以 make 它,但附加项目需要复制匿名结构的定义:

func main()
    d1 := make(demo, 0)
    d1 = append(d1, struct {
        text string
        type string
    }{"hello", "append"})

    fmt.println(d1)
    // [{hello append}]
}

尽管它可以编译,但它相当不常见。只需定义命名的结构类型,然后将 d 作为其中的一部分即可。语法几乎相同,但很简单:

// just defined struct type
type demo struct {
    Text string
    Type string
}

func main() {
    
    d2 := []demo{{
        Text: "Hello",
        Type: "Slice",
    }}
    fmt.Println(d2)
    // [{Hello Slice}]
}

演示:https://go.dev/play/p/4kSXqYKEhst

好了,本文到此结束,带大家了解了《如何构造切片结构的对象?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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