golang 中奇怪的空切片

2021-10-19 09:17:10 字數 744 閱讀 3052

本文中介紹乙個奇怪現象,乙個空列表(或切片),卻可以列印出列表中的內容。

以下**中,在乙個json字串中,定義乙個列表,列表中有乙個空字串。

接著,將json字串解析到結構體中,最後,列印結構體中的字串列表。

package main

import

("fmt"

"encoding/json"

)type host struct

func

main()

`)h := host

err := json.

unmarshal

(b,&h)

if err !=

nil fmt.

println

("host:"

, h)

fmt.

println

("iplist:"

, h.iplist,

", len:"

,len

(h.iplist)

)for

_,ip :=

range h.iplist

}

output:

host:

iplist: , len: 1

ip: , len: 0

從輸出可以看到,iplist是空列表,在遍歷時,卻可以列印出內容–空字串。

golang 定義乙個空切片 go語言切片用法詳解

1.定義 切片在go語言的原始碼定義如下所示,由於其資料結構中有指向底層陣列的指標,所以切片是一種引用型別。src runtime slice.go type slice struct s1 array 0 4 s2 array 4 s3 array 2 fmt.println s1 0 1 2 3...

關於golang中的切片詳解

之前對切片的理解是本身是乙個指標,指標指向陣列,因為陣列是值賦值,所以陣列作為函式引數傳遞時,會被複製乙份,傳遞較大陣列時會比較浪費記憶體。之前的理解部分對,但是瑕疵和錯誤的地方太多。切片本身是乙個結構體,它是被golang封裝過的結構體,所以使用起來和陣列差不多,其結構體內容如下 type sli...

golang中的空slice案例

package main func main 執行成功 補充 golang slice 詳解 func main var slice array 1 7 array startindex endindex 不包含endindex 2.直接建立陣列切片 slice2 make int,5,10 3.直...