我是Golang的創始人。這個問題可能很簡單,但它讓我很困惑。以下兩種初始化用戶變量的方式有什麼區別?
,如果有一個用戶結構:
type user struct{
name string
email string
}
是什麼以下兩種方法來初始化用戶變量之間的區別?
mike := user{"mike", "[email protected]"}
lisa := &user{"lisa", "[email protected]"}
我是Golang的創始人。這個問題可能很簡單,但它讓我很困惑。以下兩種初始化用戶變量的方式有什麼區別?
,如果有一個用戶結構:
type user struct{
name string
email string
}
是什麼以下兩種方法來初始化用戶變量之間的區別?
mike := user{"mike", "[email protected]"}
lisa := &user{"lisa", "[email protected]"}
可變mike
是user
類型的變量而lisa
是一個指針,類型是*user
。
表達式&user{…}
表示取指針指向新的用戶對象。
如果有一個函數:func(u user)notify {......},'mike.notify()'和'lisa.notify()'和'(* lisa).notify()'是相同? – luoyhang003
@ luoyhang003是的,「自動解引用」:https://stackoverflow.com/a/13533822/3861083 –
初始化實例用戶結構沒有區別。
它在目標變量中的訪問方式有很大差異。
看這個片段:
type user struct {
name string
email string
}
someuser := user{"mike", "[email protected]"}
mike := someuser
lisa := &someuser
someuser.name = "hello"
fmt.Println(mike.name) //name is not changed since user struct is copied
fmt.Println(lisa.name) //name is changed since user struct is referred
通過Go的旅程並着重於https://tour.golang.org/moretypes/1 ff。 – Volker