我正在学golang。其中一个练习是网友问我创建的2D切片dy行dx包含列uint8.我目前有效的方法是:1 v9 s: J1 \- K
+ A' n6 }& D k! H* v# F
a:= make([][]uint8,dy) initialize a slice of dy slicesfor i:=0;i我认为遍历上的每一个切片都太冗长了。如果切片有更多的维度,代码就会变得笨拙。是否有一个简单的方法来初始化 Go 中的 2D(或 n 维)切片?( P; N( A- n m8 X/ M
7 O" W3 h4 @5 }5 @8 s
解决方案: ' g) C" W4 a) M5 \# \4 P _7 j. s
没有更简单的方法,你所做的就是正确;因为切片总是一维的,但它们可以结合起来构建更高维度的对象。 8 Z% M, n& k# \' Z* b! t' D
你可以简化的一件事是使用它for range构造:[code]a := make([][]uint8,dy)for i := range a a = make([]uint8,dx)} . s/ w- H% ?) t u
另外,请注意,如果使用复合文始化切片,您可以免费获得它,例如:% {$ G6 u. ?9 ~2 J; G
( Q: E2 o, k0 W
a := [][]uint8{ {0,1,2,3}, {4,5,6,7},}fmt.Println(a) // Output is [0 1 2 3] [4 5 6 7]code]是的,这有它的局限性,因为你似乎必须列举所有的元素;但有一些技巧,你不必列举所有值,只是列举不是切片元素类型的零值。 - M ]) J R+ w- Z6 Y$ C0 N; d