Go中两种形式的struct声明

我在函数作用域中有两种形式的struct声明。据我所见,下面列出的摘录片段炒锅还不错。问题是两种声明方式有什么区别?仅仅是一个语义问题还是在幕后有些棘手?


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)

}


MM们
浏览 446回答 2
2回答

RISEBY

一种是命名类型-您可以根据需要使用该类型名称创建该类型的多个变量。另一种类型没有名称。除使用:=运算符外,不能创建其他类型的变量。

胡子哥哥

person1是指向结构的指针,而person2本身是结构值。如果您做了,person1 := Person1{Name : "John Smith", Id : 10}那将是相同的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go