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

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

Nil slice vs 空 slice 和 nil 值比較

Nil slice vs 空 slice 和 nil 值比較

Go
猛跑小豬 2021-11-29 16:28:48
我已經(jīng)閱讀了一些關(guān)于 nil slice 與 empty slice 的文本。我相信我對它們之間的差異有一些基本的了解。我的理解總結(jié):var instance []Typeis nil slice and instance == nilreturn true; whileinstance:=[]Type{}是空切片并且instance != nil然而,這個(gè)特殊的例子仍然讓我感到困惑。請查看下面的鏈接以獲取代碼。我的問題是最后兩個(gè)案例。 https://play.golang.org/p/udyHoOlSeP假設(shè)我想比較兩個(gè)切片,重命名類型和接口匹配等等。接收者可以是的實(shí)例nil,即使它沒有被定義為按值復(fù)制;雖然參數(shù)是按值復(fù)制的,但只要參數(shù)不是無類型的,它似乎是非零的。在最后兩種情況下,接收器已被識別為nilwhile 參數(shù)正在處理,:=因此它變成了一個(gè)空切片。(但other == nil也報(bào)告錯(cuò)誤......)我該如何解決這個(gè)問題以滿足以下要求?nilslice.Equals(nilslice) // -> true此外,我嘗試定義另一個(gè)與接口指針相比的接口,但失敗了。編譯器抱怨說cannot use p (type *AnotherNullable) as type *PointerComparable in argument to AnotherNullable(nil).Equals:    *PointerComparable is pointer to interface, not interface https://play.golang.org/p/wYO1GKcBds我該如何解決?編輯:感謝@zippoxer 提供的所有見解。我學(xué)到了很多。我也希望新讀者,也請不要忘記查看@zippoxer 在答案中的評論!
查看完整描述

1 回答

?
喵喵時(shí)光機(jī)

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

首先,您不需要指向接口的指針。一個(gè)接口已經(jīng)是一個(gè)指針。請參閱Go:interface{} 的含義是什么?


只需更改 Equals 方法以接受 aPointerComparable而不是 a *PointerComparable。Equals 將接受一個(gè)接口而不是一個(gè)指向接口的指針,但你仍然可以傳遞一個(gè)指向切片/任何東西的指針。見https://play.golang.org/p/e_Gtq2oAFA


其次,接收者Nullable不是一個(gè)接口,而你傳遞給 Equals 的參數(shù)是一個(gè)接口。這將解釋為什么Nullable接收器保持 nil 并且Comparable參數(shù)不是 nil,盡管它的底層切片是。問題是,Comparable參數(shù)是一個(gè)指向某物的接口,所以無論它指向什么,它都不會為零。


這段代碼解釋了這個(gè)問題:


var a interface{}

fmt.Println(a == nil) // true, the interface doesn't point to anything

var someNilSlice []int

fmt.Println(someNilSlice == nil) // true, just some nil slice

a = someNilSlice

fmt.Println(a == nil) // false, now the interface does point to something


查看完整回答
反對 回復(fù) 2021-11-29
  • 1 回答
  • 0 關(guān)注
  • 227 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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