亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當“用戶”是結構時,什么是“(*用戶)(無)”?

當“用戶”是結構時,什么是“(*用戶)(無)”?

Go
胡子哥哥 2022-10-04 19:16:12
這將編譯:package mainimport (    "fmt")type User struct {    ID int64}func main() {    v := (*User)(nil)    fmt.Println(v)}這里,是什么?我在go-pg遇到了這種符號,并且不知道找到答案,因為在谷歌上搜索非常困難。(*User)(nil)
查看完整描述

1 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

如果 是一種類型,則是另一種類型,一種指針類型,一種指向 的指針。User*UserUser

(*User)(nil)是一種類型轉換:它將非類型化的預聲明標識符轉換為 。您必須放在括號中,否則表達式將嘗試轉換為(如果是結構,則為編譯時錯誤),然后取消引用它。nil(*User)*UsernilUserUser

所以將是一個類型的變量,保存指針值。v*Usernil

表達式是一個短變量聲明,它等效于(速記)以下變量聲明v := (*User)(nil)

var v *User = nil

這當然與

var v *User

因為如果缺少初始化表達式,則變量將初始化為其零值,該值適用于所有指針類型。nil


查看完整回答
反對 回復 2022-10-04
  • 1 回答
  • 0 關注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號