为了账号安全,请及时绑定邮箱和手机立即绑定

Go中两种形式的struct声明

Go中两种形式的struct声明

Go
MM们 2021-04-14 14:09:24
我在函数作用域中有两种形式的struct声明。据我所见,下面列出的摘录片段炒锅还不错。问题是两种声明方式有什么区别?仅仅是一个语义问题还是在幕后有些棘手?package mainimport "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)}
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

一种是命名类型-您可以根据需要使用该类型名称创建该类型的多个变量。

另一种类型没有名称。除使用:=运算符外,不能创建其他类型的变量。


查看完整回答
反对 回复 2021-04-26
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

person1是指向结构的指针,而person2本身是结构值。如果您做了,person1 := Person1{Name : "John Smith", Id : 10}那将是相同的


查看完整回答
反对 回复 2021-04-26
  • 2 回答
  • 0 关注
  • 345 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信