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语言操作数据库及其常规操作的示例代码
Apr 21 Golang
Go语言中break label与goto label的区别
Apr 28 Golang
浅谈Golang 嵌套 interface 的赋值问题
Apr 29 Golang
聊聊golang中多个defer的执行顺序
May 08 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
golang实现一个简单的websocket聊天室功能
Oct 05 Golang
Golang原生rpc(rpc服务端源码解读)
Apr 07 Golang
Golang 1.18 多模块Multi-Module工作区模式的新特性
Apr 11 Golang
golang用type-switch判断interface的实际存储类型
Apr 14 Golang
Golang 实现WebSockets
Apr 24 Golang
Golang入门之计时器
May 04 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
python如何提升爬虫效率
2020/09/27 Python
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
陈欧的广告词
2014/03/18 职场文书
员工工作表现评语
2014/04/26 职场文书
医院保洁服务方案
2014/06/11 职场文书
班级团队活动方案
2014/08/14 职场文书
大学生求职自荐信
2015/03/24 职场文书
经营目标责任书
2015/05/08 职场文书
关于分班的感言
2015/08/04 职场文书
2016春季运动会前导词
2015/11/25 职场文书