首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构造切片结构的对象?

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

Stack Overflow用户
提问于 2021-12-04 14:44:28
回答 1查看 511关注 0票数 0
代码语言:javascript
复制
package main

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

在这段代码中,我在声明demo结构的对象时出错:

./ Text .11:11:3:未定义:文本

./ or .or:11:9:无法使用"Hello“(非类型化字符串常量)作为结构{文本字符串;在数组或片文本中键入string}值

./方案:12:3:未定义:类型

./ or .or:12:9:无法使用" string“(非类型化字符串常量)作为结构{Text string;在数组或片文本中键入string}值

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-04 15:06:19

因为您将demo声明为匿名结构的一个片段,所以您必须使用demo{}来构造这个片段,使用{Text: "Hello", Type: "string"}来构造这个项目。

代码语言:javascript
复制
func main() {
    d := demo{{
        Text: "Hello",
        Type: "Anon",
    }}

    fmt.Println(d)
    // [{Hello Anon}]
}

作为一个切片,您也可以对其进行make,但是附加项需要复制匿名结构的定义:

代码语言:javascript
复制
func main()
    d1 := make(demo, 0)
    d1 = append(d1, struct {
        Text string
        Type string
    }{"Hello", "Append"})

    fmt.Println(d1)
    // [{Hello Append}]
}

然而,尽管它是编译的,但它是相当罕见的。只需定义命名的struct类型,然后将d定义为其中的一个片段。语法几乎相同,但很简单:

代码语言:javascript
复制
// 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70226630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档