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

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

在結構中取消引用指向 DB 的指針

在結構中取消引用指向 DB 的指針

Go
冉冉說 2021-08-10 16:57:17
通常,當我看到在結構上聲明的字段時,它沒有指針或取消引用的指針符號 *,但是在幾個代碼片段中,我看到結構中的數據庫字段帶有指針取消引用,如下所示。為什么這是必要的?type DB struct {    *bolt.DB}func Open(path string, mode os.FileMode) (*DB, error) {    db, err := bolt.Open(path, mode)    if err != nil {        return nil, err    }    return &DB{db}, nil}
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

或取消引用的指針符號 *

這是規范,對于復雜的非值類型,以避免復制。
請參閱Golang 書籍“指針”以獲取其中包含指針的結構示例。

return &DB{db}

這將返回一個指向新創建的DB實例的指針。
正如“你能用 Go 在內存中“固定”一個對象嗎? 中提到的:

請注意,與 C 不同,返回局部變量的地址是完全可以的;與變量關聯的存儲在函數返回后仍然存在

從“指針/值細微之處”:

Go 也是按值傳遞,但它同時具有指針和值類型。指針指向某個內存位置,并允許您改變該位置的數據


如需更多信息,請參見“最佳實踐‘返回’結構進去嗎? ”

將指針用于大結構或必須更改的結構,否則使用值,因為通過指針意外更改內容會令人困惑。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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