第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

隱藏零值,理解金剛在這里失敗的原因

隱藏零值,理解金剛在這里失敗的原因

隱藏零值,理解金剛在這里失敗的原因我不明白如何正確地保證某件事不是nil在這種情況下:package main type shower interface {   getWater() []shower}type display struct {   SubDisplay *display}func (d display) getWater() []shower {   return []shower{display{}, d.SubDisplay}}func main() {   // SubDisplay will be initialized with null   s := display{}   // water := []shower{nil}   water := s.getWater()   for _, x := range water {     if x == nil {       panic("everything ok, nil found")     }     //first iteration display{} is not nil and will     //therefore work, on the second iteration     //x is nil, and getWater panics.     x.getWater()   }}我找到的唯一方法是檢查這個(gè)值是否真的nil是通過反射。這真的是想要的行為嗎?還是我沒有看到代碼中的一些重大錯(cuò)誤?在這里播放鏈接
查看完整描述

2 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

讓我們把接口看作一個(gè)指針。

假設(shè)你有一個(gè)指針a這是零,指的是什么都沒有。

var a *int // nil

那么你就有了一個(gè)指針b它指向a.

var b **intb = &a // not nil

看看發(fā)生了什么?b指向無(wú)意義的指針。所以即使是鏈尾的零指針,b指的是什么-不是零。

如果您查看進(jìn)程的內(nèi)存,它可能如下所示:

address | name | value1000000 | a    | 02000000 | b    | 1000000

看見?a指向地址0(這意味著nil),以及b的地址a (1000000).

同樣的情況也適用于接口(只是它們看起來(lái)有點(diǎn)不同。)在記憶中).

就像指針一樣,指向零指針的接口本身不會(huì)是零。.

給你自己看看這是如何與指針一起工作的它是如何與接口一起工作的.


查看完整回答
反對(duì) 回復(fù) 2019-07-12
  • 2 回答
  • 0 關(guān)注
  • 444 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)