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结构的对象?
发布于 2021-12-04 15:06:19
因为您将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}]
}然而,尽管它是编译的,但它是相当罕见的。只需定义命名的struct类型,然后将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://stackoverflow.com/questions/70226630
复制相似问题