Я изучал golang, и когда я проходил главу, описывающую Структуры, я сталкивался с различными способами инициализации структур.Основы Golang struct и новое() ключевое слово
p1 := passport{}
var p2 passport
p3 := passport{
Photo: make([]byte, 0, 0),
Name: "Scott",
Surname: "Adam",
DateOfBirth: "Some time",
}
fmt.Printf("%s\n%s\n%s\n", p1, p2, p3)
В то время как эти печати значения структур, как
{ } { } { Scott Adam Some time}
, следующий код ниже отпечатков с амперсандом, потому что это ссылка.
pointerp1 := &p3
fmt.Printf("%s", pointerp1)
pointerp2 := new(passport)
pointerp2.Name = "Anotherscott"
fmt.Printf("%s", pointerp2)
&{ Scott Adam Some time}&{ Anotherscott }
Пожалуйста, помогите мне с моими сомнениями.
в использовании
pointerp1 := &p3
,pointerp1
является опорной переменнойp3
, который содержит фактические данные. Аналогично, какова будет фактическая переменная, которая содержит данные дляpointerp2
?Что было бы лучшим сценарием для использования этих разных типов инициализации?
Go не имеет понятия «ссылки». Не называйте указатели «ссылки». – Volker
@ Волькер Спасибо. Это произошло из моего класса Java. Я это запомню. – scott