久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Go 語(yǔ)言中的 nil

nil?是 Go 語(yǔ)言中內(nèi)置的一個(gè)標(biāo)識(shí)符,有人會(huì)把它當(dāng)作其它語(yǔ)言中的NULL,這個(gè)是不準(zhǔn)確的。本文就來(lái)介紹一下 Go 語(yǔ)言中的?nil?的特點(diǎn)。

 

1. nil 是特殊的零值

在 Go 語(yǔ)言中,任何一個(gè)變量在聲明之后會(huì)自動(dòng)被賦予一個(gè)零值。數(shù)值類型的變量零值為0,字符串為"",而指針、切片、map、通道、函數(shù)和接口的零值就是nil。

代碼示例

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? )
  • 6
  • 7? func main() {
  • 8? ? ? ? ? var m map[int]string
  • 9? ? ? ? ? var p *int
  • 10? ? ? ? var c chan int
  • 11? ? ? ? var s []int
  • 12? ? ? ? var f func()
  • 13? ? ? ? var i interface{}
  • 14? ? ? ? fmt.Printf("map:%#vn", m)
  • 15? ? ? ? fmt.Printf("指針:%#vn", p)
  • 16? ? ? ? fmt.Printf("通道:%#vn", c)
  • 17? ? ? ? fmt.Printf("切片:%#vn", s)
  • 18? ? ? ? fmt.Printf("函數(shù):%#vn", f)
  • 19? ? ? ? fmt.Printf("接口:%#vn", i)
  • 20? }

執(zhí)行結(jié)果:

圖片描述

 

2. nil 標(biāo)識(shí)符無(wú)法比較

與其他語(yǔ)言不同,在 Go 語(yǔ)言中?nil 和 nil 之間是無(wú)法比較的

代碼示例

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? )
  • 6
  • 7? func main() {
  • 8? ? ? ? ? fmt.Println(nil == nil)
  • 9? }

執(zhí)行結(jié)果:

圖片描述

而在 Java 中

代碼塊
  • 1? class Untitled {
  • 2? ? ? ? ? public static void main(String[] args) {
  • 3? ? ? ? ? ? ? ? ? ? System.out.println(null==null);
  • 4? ? ? ? ?? }
  • 5? }

以上代碼會(huì)輸出?true

 

3. 不同類型的 nil 的長(zhǎng)度不同

不同類型的變量的內(nèi)存分配都是不同的,即使是?nil?,分配的內(nèi)存也是不同的。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "unsafe"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? var m map[int]string
  • 10? ? ? ? var p *int
  • 11? ? ? ? var c chan int
  • 12? ? ? ? var s []int
  • 13? ? ? ? var f func()
  • 14? ? ? ? var i interface{}
  • 15? ? ? ? fmt.Println("map:", unsafe.Sizeof( m ))
  • 16? ? ? ? fmt.Println("指針:", unsafe.Sizeof(p))
  • 17? ? ? ? fmt.Println("通道:", unsafe.Sizeof(c))
  • 18? ? ? ? fmt.Println("切片:", unsafe.Sizeof(s))
  • 19? ? ? ? fmt.Println("函數(shù):", unsafe.Sizeof(f))
  • 20? ? ? ? fmt.Println("接口:", unsafe.Sizeof(i))
  • 21? }

執(zhí)行結(jié)果:

圖片描述

 

4. 小結(jié)

本文主要介紹了 Go 語(yǔ)言中的特殊標(biāo)識(shí)符?nil?的一些特性:

  • nil 是作為標(biāo)識(shí)一些特殊類型變量的零值存在的;
  • nil 和 nil 是無(wú)法比較的,nil 可以零值為 nil 的變量比較
  • nil 的長(zhǎng)度隨著類型變化而變化

文章來(lái)源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!

  • <menu id="dlktz"></menu>
    <ul id="dlktz"></ul>
    <menu id="dlktz"></menu>
    <bdo id="dlktz"></bdo>
    主站蜘蛛池模板: 屯留县| 乌海市| 商南县| 绥江县| 龙胜| 普兰县| 西平县| 青铜峡市| 聂拉木县| 高邮市| 吕梁市| 沭阳县| 宣威市| 灵丘县| 洪泽县| 上饶市| 三明市| 瓦房店市| 沭阳县| 唐山市| 富顺县| 枣阳市| 仙居县| 吴旗县| 会同县| 呼玛县| 威远县| 和平区| 凌源市| 台江县| 汤原县| 夏津县| 平果县| 北碚区| 读书| 云林县| 江川县| 武陟县| 肇东市| 嘉黎县| 安阳县|