go 创建 数组和 切片 之间的 微小差异

简介: go 创建 数组和 切片 之间的 微小差异

创建数组

arrs := [5]int{1,2,3,4}

创建切片

arrs := []int{1,2,3,4}

总结

指定 [len]type{ v0,v1,v2,v3 }

创建的 就是数组

不指定len []int{ v0,v1,v2 }

创建的就是切片

具体的区别就是,数组 在函数调用时 是按照 值拷贝进行传递的

而切片 则是 按照 引用方式 进行 传递的


体验 数组 和 切片的 差异

package main
import (
  "fmt"
)
func change(vals interface{}) {
  if dArray, ok := vals.([5]int); ok == true {
    dArray[0] += 10
  } else if dSlice, ok := vals.([]int); ok == true {
    dSlice[0] += 10
  }
}
func changeVal() {
  a := [5]int{1, 1, 1, 1, 1}
  fmt.Println(" before cahnge val ", a)
  change(a)
  fmt.Println(" after cahnge val ", a)
}
func changeRef() {
  a := []int{1, 1, 1, 1, 1}
  fmt.Println(" before cahnge val ", a)
  change(a)
  fmt.Println(" after cahnge val ", a)
}
func main() {
  changeVal()
  changeRef()
  return
}

output

 go run .\compareValRef.go
 array before cahnge val  [1 1 1 1 1]
 array after cahnge val  [1 1 1 1 1]
 slice before cahnge val  [1 1 1 1 1]
 slice after cahnge val  [11 1 1 1 1]
相关文章
|
1月前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
41 7
|
2月前
|
Go 索引
Go语言中,遍历数组或切片
在Go语言中,遍历数组或切片
59 6
|
3月前
|
存储 前端开发 Go
Go语言中的数组
在 Go 语言中,数组是一种固定长度的、相同类型元素的序列。数组声明时长度已确定,不可改变,支持多种初始化方式,如使用 `var` 关键字、短变量声明、省略号 `...` 推断长度等。数组内存布局连续,可通过索引高效访问。遍历数组常用 `for` 循环和 `range` 关键字。
|
1月前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
107 67
|
1月前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
105 62
|
2月前
|
Go 索引
go语言遍历数组和切片
go语言遍历数组和切片
23 2
|
2月前
|
存储 Go
|
2月前
|
Java Go 数据处理
go语言使用切片而非数组
【10月更文挑战第18天】
16 1
|
2月前
|
Go
|
3月前
|
存储 安全 Go
Go语言切片:从入门到精通的深度探索###
本文深入浅出地剖析了Go语言中切片(Slice)这一核心概念,从其定义、内部结构、基本操作到高级特性与最佳实践,为读者提供了一个全面而深入的理解。通过对比数组,揭示切片的灵活性与高效性,并探讨其在并发编程中的应用优势。本文旨在帮助开发者更好地掌握切片,提升Go语言编程技能。 ###