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 相关文章推荐
解决Golang中goroutine执行速度的问题
May 02 Golang
浅谈golang package中init方法的多处定义及运行顺序问题
May 06 Golang
golang 实现时间戳和时间的转化
May 07 Golang
Go 在 MongoDB 中常用查询与修改的操作
May 07 Golang
Golang 获取文件md5校验的方法以及效率对比
May 08 Golang
浅谈Golang 切片(slice)扩容机制的原理
Jun 09 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
Go语言入门exec的基本使用
May 20 Golang
Go web入门Go pongo2模板引擎
May 20 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
体育彩票排列三组选三算法分享
2014/03/07 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
python实现博客文章爬虫示例
2014/02/26 Python
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
python实现跨文件全局变量的方法
2014/07/07 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
python生成验证码图片代码分享
2016/01/28 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
实习评语大全
2014/04/26 职场文书
服务宗旨标语
2014/07/01 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
信访稳定工作汇报
2014/10/27 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
四年级数学教学反思
2016/02/16 职场文书
Django操作cookie的实现
2021/05/26 Python
Python基础学习之奇异的GUI对话框
2021/05/27 Python