Go语言基础语法——切片

go中的切片可对标python中的切片,是对数组的抽象,可以理解为动态数组,可通过一个不指定大小的数组来声明一个切片

go中切片的几种常用语法的示例程序如下:

一、通过make函数定义切片及使用len()和cap()函数

实例:

package main
  
import "fmt"

func main() {
        通过make函数定义切片,第二、三个参数分别是切片初始长度和切片容量
        var numbers = make([]int,3,5) 

        printSlice(numbers)
}
func printSlice(x []int) {
        fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}

运行结果:

 

二、 切片未初始化时为空(即等于nil)

实例:

package main
  
import "fmt"

func main() {
        var numbers []int

        printSlice(numbers)

        if(numbers == nil) {
                fmt.Printf("切片是空的\n")
        }
}

func printSlice(x []int) {
        fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}

运行结果:

 

三、切片截取

实例如下:

package main
  
import "fmt"

func main() {
        //创建切片
        numbers := []int{0,1,2,3,4,5,6,7,8}
        printSlice(numbers)

        //打印原始切片
        fmt.Println("numbers == ", numbers)

        //打印子切片从索引1(包含)到索引4(不包含)
        fmt.Println("numbers[1:4] == ", numbers[1:4])

        //默认下限为0
        fmt.Println("numbers[:3] == ", numbers[:3])

        //默认上限为len(s)
        fmt.Println("number[4:] == ", numbers[4:])

        numbers1 := make([]int,0,5)
        printSlice(numbers1)

        //打印子切片从索引0(包含)到索引2(不包含)
        number2 := numbers[:2]
        printSlice(number2)

        //打印子切片从索引2(包含)到索引5(不包含)
        number3 := numbers[2:5]
        printSlice(number3)

}
func printSlice(x []int) {
        fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}

运行结果:

 

四、切片增加元素与扩容

当需要对切片进行扩容时,只能通过定义一个新的切片,然后将原来的切片通过copy()函数拷贝到新的切片中

实例如下:

package main
  
import "fmt"

func main() {
        var numbers []int
        printSlice(numbers)

        //向切片添加元素
        numbers = append(numbers, 0)
        printSlice(numbers)

        //向切片添加多个元素
        numbers = append(numbers, 1,2,3,4)
        printSlice(numbers)

        //创建一个新切片,容量是之前切片的两倍
        numbers1 := make([]int, len(numbers), 2*cap(numbers))

        //将numbers拷贝到numbers1
        copy(numbers1, numbers)
        printSlice(numbers1)
}

func printSlice(x []int) {
        fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

运行结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值