相关疑难解决方法(0)

在Go中创建2D切片的简洁方法是什么?

我正在通过A Tour of Go学习Go.其中一个练习要求我创建一个包含dy行和dx列的2D切片uint8.我目前采用的方法是:

a:= make([][]uint8, dy)       // initialize a slice of dy slices
for i:=0;i<dy;i++ {
    a[i] = make([]uint8, dx)  // initialize a slice of dx unit8 in each of dy slices
}
Run Code Online (Sandbox Code Playgroud)

我认为迭代每个切片来初始化它太冗长了.如果切片具有更多尺寸,则代码将变得难以处理.是否有一种简洁的方法来初始化Go中的2D(或n维)切片?

go slice

65
推荐指数
3
解决办法
5万
查看次数

切片类型

我正在通过优秀的Tour of Go工作.我使用以下解决方案完成了其中一个练习(#45):

func Pic(dx, dy int) [][]uint8 {
    pic := make([][]uint8, dy) /* type declaration */
    for i := range pic {
        pic[i] = make([]uint8, dx) /* again the type? */
        for j := range pic[i] {
            pic[i][j] = uint8((i+j)/2)
        }
    }
    return pic
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我必须使用两次类型的make语句uint8(请参阅代码段中的注释).这似乎是多余的,但我无法弄清楚如何以另一种方式做到这一点.

types go slice

63
推荐指数
2
解决办法
3万
查看次数

二维数组的内存表示如何

在Java中,正如我们所知,二维数组是多维一维数组.这意味着那些一维数组在内存上不连续.

相反,在C中,二维数组实际上是一维数组,其大小为total_row*total_column.因为Go语言使用了C语言中的许多概念.所以我的问题是:Go中的二维数组的内存表示看起来像是C还是Java?

arrays go slice

7
推荐指数
1
解决办法
3627
查看次数

标签 统计

go ×3

slice ×3

arrays ×1

types ×1