如何声明一个新的结构实例与"var"不同于在Go中使用"new"?

Car*_*son 3 go

以下代码创建了一个可用的struct实例Car.这与使用有new(Car)什么不同?

例:

type Car struct {
  make string
}

func Main() {
  var car Car; // how is this different than "car := new(Car)"?

  car.make = "Honda"
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*erg 8

一个定义一个Car变量,另一个定义一个指向Car的指针.

var car Car      // defines variable car is a Car
car2 := new(Car) // defines variable car2 is a *Car and assigns a Car to back it
Run Code Online (Sandbox Code Playgroud)

car := new(Car)可以var car Car像这样实现:

var x Car
car := &x
Run Code Online (Sandbox Code Playgroud)