Golang中数组和切片的区别

一句话总结:切片的底层是数组,可以理解为切片是动态数组,注意两者初始化和函数参数的区别。

1、初始化:

数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变 

数组: a := [...]int{1,2,3}   或 var a = [...]int{1, 2, 3}

  a := [3]int{1,2,3}   或  var a  = [3]int {1, 2, 3}

切片: a:= []int{1,2,3}    或 var a = []int{1,2,3}

a := make([]int, 5)  

 a := make([]int, 5, 10)    

var s []int = []int{1, 2, 3, 4}

//var a [...]int = [...]int{1, 2, 3} //error

切片不需要指定大小

值得注意的是: string 类型 的底层是数组, 是数组就可以用来切片操作

    //s :="hello world"

    var s string = "hello world"

    s1 := s[0:len(s)]

    fmt.Println(s1)

输出的结果:hello world

2、函数传递:

数组需要明确指定大小,切片不需要。数组是值传递,切片是地址传递。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值