一架梯子,一头程序猿,仰望星空!
Golang中级特性面试题 > 内容正文

介绍下Go数组和切片的关系?


问题简答

Go语言中数组的长度是固定的,在实际应用中非常不方便,因此go语言提供了slice机制,我们一般翻译成切片,可以将切片当成动态数组用,动态数组指的是数组的长度可以动态调整,切片是对数组的一个引用。

问题详解:

数组和切片的简单例子

package main

import "fmt"

func main() {
    // 定义一个数组
    var nums = [5]int{1, 2, 3, 4, 5}
    fmt.Println("数组:", nums)

    // 定义一个切片
    var slice = nums[0:3]
    fmt.Println("切片:", slice)

    // 增加切片的长度
    slice = append(slice, 6)
    fmt.Println("切片:", slice)

    // 修改切片中的元素
    slice[0] = 10
    fmt.Println("切片:", slice)
    fmt.Println("数组:", nums)
}

输出

数组: [1 2 3 4 5]
切片: [1 2 3]
切片: [1 2 3 6]
切片: [10 2 3 6]
数组: [10 2 3 6 5]