日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Go 數組與切片的區別

作者:GeeCode 更新時間: 2023-07-09 編程語言

在 Go 語言中,數組和切片都是用于存儲一組相同類型的元素,但它們在內部結構、長度和使用方式上有很大的區別。

數組

在 Go 語言中,數組是一組固定長度的元素的集合。數組的長度是在創建數組時指定的,且不能更改。數組中的元素類型必須相同,可以是任何基本類型或結構體類型。

下面是一個示例代碼,演示了如何創建和使用數組:

package main

import "fmt"

func main() {
    // 創建一個長度為 3 的整型數組
    var arr [3]int

    // 設置數組元素的值
    arr[0] = 1
    arr[1] = 2
    arr[2] = 3

    // 打印數組
    fmt.Println(arr) // 輸出:[1 2 3]
}

在上面的代碼中,我們創建了一個長度為 3 的整型數組 arr,并為其設置了元素的值。我們可以使用數組下標訪問數組中的元素,并使用 fmt.Println 函數打印整個數組。

切片

在 Go 語言中,切片是一個動態長度的序列,可以通過對底層數組的引用來實現。切片可以用于存儲任何類型的元素,且可以動態擴展和收縮。

下面是一個示例代碼,演示了如何創建和使用切片:

package main

import "fmt"

func main() {
    // 創建一個長度為 3 的整型數組
    arr := [3]int{1, 2, 3}

    // 創建一個長度為 2 的整型切片,引用數組的前兩個元素
    slice := arr[:2]

    // 打印切片和底層數組
    fmt.Println(slice) // 輸出:[1 2]
    fmt.Println(arr)   // 輸出:[1 2 3]
}

在上面的代碼中,我們創建了一個長度為 3 的整型數組 arr,并使用數組的前兩個元素創建了一個長度為 2 的整型切片 slice。我們可以使用 : 操作符來創建一個切片,其中左側的下標表示切片的起始位置,右側的下標表示切片的結束位置(不包括該位置)。如果左側的下標省略,則默認為 0;如果右側的下標省略,則默認為數組的長度。我們可以使用 fmt.Println 函數打印切片和底層數組。

區別

數組和切片在 Go 語言中有很大的區別,主要體現在以下幾個方面:

內部結構

數組在內存中是一段連續的內存空間,元素的類型和長度都是固定的。切片在內存中由一個指向底層數組的指針、長度和容量組成,長度表示切片當前包含的元素個數,容量表示切片可以擴展的最大元素個數。

長度

數組的長度在創建時指定,不能更改。切片的長度可以動態擴展或收縮,可以根據需要自由調整。

使用方式

數組在使用時需要明確指定下標訪問元素,不能動態生成。切片可以使用 append 函數向其末尾添加元素,可以使用 copy 函數復制切片,也可以使用 make 函數創建指定長度和容量的切片。

示例代碼

下面是一個完整的示例代碼,演示了 Go 語言中數組和切片的區別:

package main

import "fmt"

func main() {
    // 創建一個長度為 3 的整型數組
    var arr [3]int

    // 設置數組元素的值
    arr[0] = 1
    arr[1] = 2
    arr[2] = 3

    // 創建一個長度為 2 的整型切片,引用數組的前兩個元素
    slice := arr[:2]

    // 向切片末尾添加一個元素
    slice = append(slice, 4)

    // 打印數組和切片
    fmt.Println(arr)   // 輸出:[1 2 3]
    fmt.Println(slice) // 輸出:[1 2 4]

    // 復制切片
    slice2 := make([]int, len(slice))
    copy(slice2, slice)

    // 打印切片和復制后的切片
    fmt.Println(slice)  // 輸出:[1 2 4]
    fmt.Println(slice2) // 輸出:[1 2 4]
}

在上面的代碼中,我們創建了一個長度為 3 的整型數組 arr,并使用數組的前兩個元素創建了一個長度為 2 的整型切片 slice。我們向切片末尾添加了一個元素,并使用 fmt.Println 函數打印了數組和切片。接著,我們使用 make 函數創建了一個長度和 slice 相同的空切片 slice2,并使用 copy 函數將 slice 的元素復制到 slice2 中。最后,我們使用 fmt.Println 函數打印了 sliceslice2

總結

在 Go 語言中,數組和切片都是用于存儲一組相同類型的元素,但它們在內部結構、長度和使用方式上有很大的區別。數組是一組固定長度的元素的集合,長度在創建時指定,不能更改,使用時需要明確指定下標訪問元素。切片是一個動態長度的序列,長度可以動態擴展或收縮,使用時可以動態生成、復制或添加元素。希望本文對您理解 Go 語言中數組和切片的區別有所幫助。

原文鏈接:https://blog.csdn.net/GeeCode/article/details/131465820

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新