我正在使用 exercism.com 學習 go,並閱讀教學大綱中推薦的文件和文章。
現在我在結構中並找到了下一個程式碼
package main import "fmt" type Employee struct { firstName, lastName string salary int fullTime bool } func main() { employee := &Employee{ firstName: "Walddys", lastName: "Dorrejo", salary: 1200, fullTime: true, } fmt.Println("firstName", (*employee).firstName) }
但錯誤地,我輸入了 fmt.println("firstname", *&employee.firstname)
,這給我帶來了與先前在程式碼區塊中使用的相同結果。
我的問題是,使用這個指標是否有不同或相同?
&x
產生一個指向x
的指針,而*p
取消引用指標p
。因此 *
和 &
有效地相互抵消,例如 v := *&x
和 v := x
兩個語句是相同的。
這表示 *&employee.firstName
與 employee.firstName
相同。
其中employee
是指向結構體的指針,而firstName
是該結構體的字段,則表達式employee.firstName
實際上是(*employee).firstName
的簡寫。
這表示 *&employee.firstName
也與 (*employee).firstName
相同。
請注意,您應該始終更喜歡使用速記符號。
以上是(*variable) 和 *&variable 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!