Golang二维切片初始化的实现


Posted in Golang onApril 08, 2021

引言

之前,刷Leetcode的时候,有些题需要初始化二维数组,而一维数组的初始化,比如:

var a = [5]int{1, 2, 3, 4, 5} // 用var
b := [5]int{1, 2, 3, 4, 5} // 用类型推断
var c = [...]int{1, 2, 3, 4, 5} // 不确定长度
d := [...]int{1, 2, 3, 4, 5}

如果不知道数组元素的话,可以这样:

var a [5]int
b := [5]int{}
c := make([]int, 5)

注意:类型推断,可要初始化的,如果b := [5]int,就会报错的。而var a [5]int,则不需要初始化。

二维数组初始化

比如3*4:

var a [3][4]int

结果为:
[[0 0 0 0] [0 0 0 0] [0 0 0 0]]

类型推断:

a := [3][4]int{}

结果为:
[[0 0 0 0] [0 0 0 0] [0 0 0 0]]

注意:固定长度的时候,不能是变量,比如:

m, n := 3, 4
var a [m][n]int // 报错,必须是常量表达式

如果一定要变量呢?那就得切片了了

func main() {
 m, n := 3, 4
 a := make([][]int, m) // 二维切片,3行
 for i := range a {
  a[i] = make([]int, n) // 每一行4列
 }
 fmt.Println(a)
}

结果:
[[0 0 0 0] [0 0 0 0] [0 0 0 0]]

注意,有一种情况,如果没有规定长度或者初始化,访问元素会range out呢:

var a []int // or a := []int{}
fmt.Println(a) // []
a[0] = 1 // 报错

总结

到此这篇关于Golang二维切片初始化的实现的文章就介绍到这了,更多相关Golang二维切片初始化内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Golang 相关文章推荐
一文读懂go中semaphore(信号量)源码
Apr 03 Golang
Go语言带缓冲的通道实现
Apr 26 Golang
go语言中切片与内存复制 memcpy 的实现操作
Apr 27 Golang
golang中的空slice案例
Apr 27 Golang
浅谈Golang 嵌套 interface 的赋值问题
Apr 29 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
victoriaMetrics库布隆过滤器初始化及使用详解
Apr 05 Golang
Golang 切片(Slice)实现增删改查
Apr 22 Golang
Golang 实现 WebSockets 之创建 WebSockets
Apr 24 Golang
Golang入门之计时器
May 04 Golang
Go各时间字符串使用解析
Apr 02 #Golang
Go Gin实现文件上传下载的示例代码
Apr 02 #Golang
一文读懂go中semaphore(信号量)源码
Apr 03 #Golang
go语言map与string的相互转换的实现
Apr 07 #Golang
为什么不建议在go项目中使用init()
Apr 12 #Golang
Go语言操作数据库及其常规操作的示例代码
Apr 21 #Golang
golang判断key是否在map中的代码
Apr 24 #Golang
You might like
PHP以及MYSQL日期比较方法
2012/11/29 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
js压缩利器
2007/02/20 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
销售类求职信
2014/06/13 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
扬州个园导游词
2015/02/06 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
商务宴会祝酒词
2015/08/11 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书