Go語言中nil的理解

2021-10-10 07:58:49 字數 966 閱讀 4904

現在對於golang語言的介紹比較少,寫一點自己對於nil的理解。

首先,我們取源**中看一下創始人是怎麼定義的nil

翻譯如下:

//nil是乙個預先宣告的識別符號,表示指標、通道、函式、介面、對映或切片型別。

因此,我們可以知道nil只能表示指標、通道、函式、介面、對映或切片nil是go語言中預先的識別符號

我們可以直接使用nil,而不用宣告它。

nil可以代表很多態別的零值

在go語言中,nil可以代表下面這些型別的零值:

但是要注意的一點就是,nil是指申明了變數,但沒有賦值:

在go語言中,如果你宣告了乙個變數但是沒有對它進行賦值操作,那麼這個變數就會有乙個型別的預設零值。這是每種型別對應的零值:

func

main()

fmt.

println

(a)// a為nil

// }

另外再看乙個切片的例子

func

main()

if a==

nilelse

fmt.

println

(a)//a不是nil

//}

區別兩者之間的關係:

file,err :=

funcname

(***)

if err!=

nil

[1]

go語言nil 問題?

golang 這段 checkerror 為什麼會觸發 panic package main import fmt type error struct func e error error string func checkerror err error func main 解答 首先在main函式...

如何理解go語言中的閉包

對於閉包的理解,按照下面2點切入即可 1,閉包函式的返回值是函式 2,返回的函式繫結在閉包函式內乙個變數上。對於第2條如果不好理解的話,可以這麼理解。把外層的函式去掉,把函式內定義的變數想象成全域性變數,把返回的函式想象成普通函式。本質上,就是返回了乙個函式,這個函式內操作的變數是在另乙個函式中定義...

go 語言中的繼承

go 語言中可以通過匿名field來實現繼承的效果,type t1 struct func t t1 log func t t1 print type t2 struct t2 t2 可以通過t2.log 直接訪問t1的method,就像物件導向的繼承之後一樣訪問,不過這裡要注意的傳遞到log的是t...