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]
相关文章
|
21天前
|
Go 索引
Go 语言中同一 slice 上的切片其底层数组是否是同一个
Go 语言中同一 slice 上的切片其底层数组是否是同一个
21 0
|
3月前
|
安全 Go
这一次,带你深入浅出Go语言切片和数组
这一次,带你深入浅出Go语言切片和数组
35 0
|
4月前
|
Go 数据安全/隐私保护 索引
Go语言学习5-切片类型
【1月更文挑战第4天】本篇 Huazie 带大家了解 Go 语言的切片类型
39 2
Go语言学习5-切片类型
|
2天前
|
存储 Java 编译器
一文快速掌握Go语言切片
一文快速掌握Go语言切片
5 0
|
27天前
|
存储 Go 索引
掌握Go语言:深入理解Go语言数组,基本原理与示例解析(15)
掌握Go语言:深入理解Go语言数组,基本原理与示例解析(15)
|
2月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
31 8
|
4月前
|
存储 编译器 Serverless
go语言第四章(数组和切片)
go语言第四章(数组和切片)
42 0
|
5月前
|
Java Go C语言
Go语言学习4-数组类型
本篇介绍 Go语言的数组类型
28 1
Go语言学习4-数组类型
|
5月前
|
存储 Go 容器
go语言中的数组与切片(二)
go语言中的数组与切片
29 0
|
5月前
|
测试技术 Go 容器
go语言中的数组与切片(一)
go语言中的数组与切片
37 0
go语言中的数组与切片(一)