Go語言中空切片與空切片的區別


在本文中,我們將瞭解宣告為空切片和空切片的切片之間的區別和相似之處。

Go語言中的切片用於儲存一系列元素。切片可以隨時擴充套件,並且它們的宣告方式與陣列相同,但沒有定義其容量。

空切片

空切片是在宣告時,我們只定義名稱和資料型別,而不使用內建的 **make** 函式的切片。

空切片是指其零值為 nil 的切片,並且切片的長度和容量在開始時也為 0,並且它也沒有底層陣列。

示例 1

考慮以下程式碼。

package main

import (
   "fmt"
)

func main() {
   var sl []string
   fmt.Println(sl)
   fmt.Println(len(sl))
   fmt.Println(cap(sl))

   sl = append(sl, "India", "Japan")
   fmt.Println(sl)
   fmt.Println(len(sl))
   fmt.Println(cap(sl))
}

在上面的程式碼中,我們聲明瞭一個空切片,然後列印了該切片的長度和容量。

輸出

如果我們對上述程式碼執行命令 **go run main.go**,那麼我們將在終端中獲得以下輸出。

[]
0
0
[India Japan]
2
2

空切片

空切片是使用內建的 **make** 函式宣告的切片,並且其零值不是 **nil**。

示例 2

考慮以下程式碼。

package main

import (
   "fmt"
)

func main() {
   sl := make([]string, 0)
   fmt.Println(sl)
   fmt.Println(sl == nil)
   fmt.Println(len(sl))
   fmt.Println(cap(sl))

   sl = append(sl, "India", "Japan")
   fmt.Println(sl)
   fmt.Println(len(sl))
   fmt.Println(cap(sl))
}

輸出

如果我們對上述程式碼執行命令 **go run main.go**,那麼我們將在終端中獲得以下輸出。

[]
false
0
0
[India Japan]
2
2

更新於: 2021年11月1日

1K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.