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 27 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
go语言使用Casbin实现角色的权限控制
Jun 26 Golang
Golang 语言控制并发 Goroutine的方法
Jun 30 Golang
Go语言实现Base64、Base58编码与解码
Jul 26 Golang
golang实现一个简单的websocket聊天室功能
Oct 05 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
golang连接MySQl使用sqlx库
Apr 14 Golang
Golang 字符串的常见操作
Apr 19 Golang
Go语言编译原理之变量捕获
Aug 05 Golang
go goth封装第三方认证库示例详解
Aug 14 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处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
javascript中键盘事件用法实例分析
2015/01/30 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
深入理解React高阶组件
2017/09/28 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
为什么相对PHP黑python的更少
2020/06/21 Python
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
成人教育自我鉴定
2013/11/01 职场文书
毕业生就业自荐信
2013/12/04 职场文书
魅力教师事迹材料
2014/01/10 职场文书
出国留学经济担保书
2014/04/01 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
详解PyTorch模型保存与加载
2022/04/28 Python