好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > golang 中的 nil的場景分析

golang 中的 nil的場景分析

熱門標簽:仙桃400電話辦理 不封卡外呼系統 地圖標注免費定制店 寧波語音外呼系統公司 鄭州智能語音電銷機器人價格 上海極信防封電銷卡價格 重慶慶云企業400電話到哪申請 湛江crm外呼系統排名 宿遷便宜外呼系統代理商

源碼中的 nil 是這樣定義的

// nil is a predeclared identifier representing the zero value for a
// pointer, channel, func, interface, map, or slice type.
var nil Type // Type must be a pointer, channel, func, interface, map, or slice type

所以 nil 可以理解為這些類型的零值,聲明一個變量在沒有賦值的情況下,變量處于零值狀態。

場景一

func t1() {
 var i interface{}
 var p *int

 fmt.Println("p==i", p == i)
 fmt.Println("i=", i, "i==null", i == nil)
 fmt.Println("p=", p, "p==nil", p == nil)
 fmt.Println("i TypeOf=", reflect.TypeOf(i), "i ValueOf", reflect.ValueOf(i))
 fmt.Println("p TypeOf=", reflect.TypeOf(p), "p ValueOf", reflect.ValueOf(p))
 i = p
 fmt.Println("---")
 fmt.Println("p==i", p == i)
 fmt.Println("i=", i, "i==null", i == nil)
 fmt.Println("p=", p, "p==nil", p == nil)
 fmt.Println("i TypeOf=", reflect.TypeOf(i), "i ValueOf", reflect.ValueOf(i))
 fmt.Println("p TypeOf=", reflect.TypeOf(p), "p ValueOf", reflect.ValueOf(p))

}

真相是 i 剛開始沒有類型,而 p 是有類型,所以 p 和 i 都等于 nil,但是 == 可以理解為 php 或者 js 里面的 === 全等,既要類型相等,也要值相等。

在 i = p 之后,p 和 i 類型和值保持了一致所以會相等,但是 i 已經不等于 nil 了,因為 nil 是 interface 的 0 值,或者說 i 已經指向 p ,i 現在是個有類型狀態而非 0 值狀態。

結果如下

p==i false
i= nil> i==null true
p= nil> p==nil true
i TypeOf= nil> i ValueOf invalid reflect.Value>
p TypeOf= *int p ValueOf nil>
---
p==i true
i= nil> i==null false
p= nil> p==nil true
i TypeOf= *int i ValueOf nil>
p TypeOf= *int p ValueOf nil>

場景二

func t3() {
 f1 := func(i interface{}) bool {
  return i == nil
 }

 var a *int
 fmt.Println(f1(a)) // false
 fmt.Println(f1(nil)) // true
}

a 傳遞到 func 里面,被轉成 interface,這個 interface 是有類型的 interface,相當于賦值了一下 i=a ,所以 i 的狀態不是 interface 的零值狀態 ,和 interface 零值狀態的 nil 當然是不相等

場景三

type A struct {
}

func (A) a1() int {
 return 123
}

func (*A) a2() int {
 return 321
}

type B interface {
}

func t2() {
 var a A
 var ap *A
 var b B
 var bp *B

 fmt.Println("a=", a, "a.a1()", a.a1(), a.a2()) //a= {} a.a1() 123 321; a == nil 會拋錯 struct 不能和 nil 進行比較
 fmt.Println("ap=", ap, "ap==nil", ap == nil) //ap= nil> ap==nil true

 fmt.Println("b=", b, " b==nil:", b == nil)  // b= nil> b==nil: true
 fmt.Println("bp=", bp, " bp==nil:", bp == nil) //bp= nil> bp==nil: true
}

結構體的 0 值為 {}

到此這篇關于golang 中的 nil的場景分析的文章就介紹到這了,更多相關golang 中的 nil內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang interface判斷為空nil的實現代碼
  • Golang::slice和nil的對比分析
  • golang:json 反序列化的[]和nil操作
  • 徹底理解golang中什么是nil

標簽:安康 海南 西雙版納 物業服務 儋州 電子產品 青海 遼寧

巨人網絡通訊聲明:本文標題《golang 中的 nil的場景分析》,本文關鍵詞  golang,中的,nil,的,場景,分析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang 中的 nil的場景分析》相關的同類信息!
  • 本頁收集關于golang 中的 nil的場景分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日本特级片| 精产国品一二三产区区别| 午夜影院操一| 伊人精品成人久久综合软件| 男女做爰猛烈啪啪吃奶| 日本s色大片在线观看| 同城啪啪夜约| 激情啪啪网站| 久久久伊人一本精品久久综合精品| 疯狂的蹂躏3p| 成品动漫网站入口网页版怎样打开 | 美女隐私尿口视频| yy8098午夜私人影院的特点 | 久久久久avav久久久| 成人无遮挡黄漫yy漫画免费| 武松与潘金莲艳色大片| 女班长被?c??扒衣服作文| 午夜欧美XXOO| 用力再深点里面痒| 中国女明星hdxxxx| 亚洲人成日本在线观看| 又粗又硬又爽视频| 野外妓女B???BXXX| 台湾三级香港三级在线理论| 无码人妻一区二区三区免费九色| 色播播网| 国产思思99re99在线观看| 粉嫩AV一区二区在线观看视频| 特级婬片A片AAA毛片AA做头| 吻胸摸腿揉屁股娇喘视频| 成人做爰A片免费看网站找不到了| 人妻蜜乳1~3无修| 经典黄h长篇小说| 交换妻子| 人人插人人舔| 久久久久精品A片免费看| 中文字幕亚洲中文精品乱码在线| 9966国产精品视频| 久久在精品线影院精品国产| 日本性生活一级片| 嫩草午夜少妇在线影视|