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通过递归遍历生成树状结构的操作
Apr 28 Golang
解决goland 导入项目后import里的包报红问题
May 06 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
Go 通过结构struct实现接口interface的问题
Oct 05 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Go并发4种方法简明讲解
Apr 06 Golang
golang生成并解析JSON
Apr 14 Golang
Go获取两个时区的时间差
Apr 20 Golang
Golang 实现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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
理理Vue细节(推荐)
2019/04/16 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
vuex存储token示例
2019/11/11 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
Python实现的下载网页源码功能示例
2017/06/13 Python
python爬虫爬取网页表格数据
2018/03/07 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python版本五子棋的实现代码
2018/12/11 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
python list多级排序知识点总结
2019/10/23 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
详解anaconda安装步骤
2020/11/23 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
劳资专员岗位职责
2013/12/27 职场文书
公司年终奖分配方案
2014/06/16 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js