Struct Go中结构声明的两种形式
在函数作用域中有两种形式的结构声明。就我所见,下面列出的代码片段很好。问题是这两种申报方式有什么区别?这只是一个语义问题,还是隐藏着一些棘手的问题Struct Go中结构声明的两种形式,struct,go,Struct,Go,在函数作用域中有两种形式的结构声明。就我所见,下面列出的代码片段很好。问题是这两种申报方式有什么区别?这只是一个语义问题,还是隐藏着一些棘手的问题 package main import "fmt" func main() { type Person1 struct { Name string Id int } person1 := &Person1{Name : "John Smith", Id : 10} fmt.P
package main
import "fmt"
func main() {
type Person1 struct {
Name string
Id int
}
person1 := &Person1{Name : "John Smith", Id : 10}
fmt.Printf("(%s, %d)\n", person1.Name, person1.Id)
var person2 struct {
name string
id int
}
person2.name = "Kenneth Box"
person2.id = 20
fmt.Printf("(%s, %d)\n", person2.name, person2.id)
}
一个是命名类型-如果需要,可以使用类型名称创建该类型的多个变量
另一种类型没有名称。除了使用
:=
运算符之外,您无法创建更多类型的变量。person1
是指向结构的指针,而person2
本身是结构值。如果您已经完成了person1:=person1{Name:“John Smith”,Id:10}
,那么它将是相同的