Golang二维切片初始化的实现

作者:Dreamcat 时间:2024-05-09 14:57:54 

引言

之前,刷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 // 报错

总结

来源:https://juejin.cn/post/6948325364867268644

标签:Golang,二维切片,初始化
0
投稿

猜你喜欢

  • 快速解决js动态改变dom元素属性后页面及时渲染的问题

    2024-05-02 16:17:39
  • python networkx 包绘制复杂网络关系图的实现

    2021-03-27 06:11:39
  • MySQL的root密码丢失解决方法

    2011-05-05 15:56:00
  • tensorflow之如何使用GPU而不是CPU问题

    2023-07-06 13:05:48
  • Python Django模板之模板过滤器与自定义模板过滤器示例

    2023-10-31 20:37:48
  • 关于Python 位运算防坑指南

    2022-06-13 08:06:55
  • 利用python实现简单的情感分析实例教程

    2021-12-27 18:19:42
  • 如何实现python爬虫爬取视频时实现实时进度条显示

    2022-07-01 04:17:12
  • Python while true实现爬虫定时任务

    2021-02-10 13:35:30
  • python修改字典键(key)的方法

    2023-04-16 20:26:57
  • Jupyter Notebook远程登录及密码设置操作

    2022-08-29 08:43:04
  • CSS控制Table表格文字样式

    2008-06-11 18:53:00
  • Python selenium如何设置等待时间

    2023-08-31 18:53:39
  • 新手必备的Python实用技巧和工具

    2022-08-20 04:59:01
  • python的列表生成式,生成器和generator对象你了解吗

    2022-05-15 15:10:04
  • python引用DLL文件的方法

    2021-01-17 03:35:19
  • PHP获取类私有属性的3种方法

    2023-11-20 10:32:16
  • Python中的re正则表达式模块

    2022-09-13 15:07:40
  • python学习数据结构实例代码

    2023-09-20 22:56:32
  • 如何制作K线图?

    2010-06-29 17:25:00
  • asp之家 网络编程 m.aspxhome.com