相关疑难解决方法(0)

为什么Go中有数组?

我理解Go中数组和切片之间的区别.但我不明白的是为什么有数组是有帮助的.为什么数组类型定义指定长度和元素类型有帮助?为什么我们使用的每个"数组"都不能成为切片?

arrays go slice

21
推荐指数
1
解决办法
1992
查看次数

数组与切片:访问速度

这个问题是关于访问数组和切片元素的速度,而不是关于将它们作为参数传递给函数的效率.

在大多数情况下,我希望数组切片更快,因为切片是描述数组的连续部分的数据结构,因此在访问切片的元素时可能会涉及额外的步骤(间接地是其底层数组的元素) .

所以我写了一个小测试来测试一批简单的操作.有4个基准函数,前2个测试全局切片和全局数组,另外2个测试局部切片和本地数组:

var gs = make([]byte, 1000) // Global slice
var ga [1000]byte           // Global array

func BenchmarkSliceGlobal(b *testing.B) {
    for i := 0; i < b.N; i++ {
        for j, v := range gs {
            gs[j]++; gs[j] = gs[j] + v + 10; gs[j] += v
        }
    }
}

func BenchmarkArrayGlobal(b *testing.B) {
    for i := 0; i < b.N; i++ {
        for j, v …
Run Code Online (Sandbox Code Playgroud)

arrays performance benchmarking go slice

16
推荐指数
2
解决办法
3420
查看次数

二维数组的内存表示如何

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

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

arrays go slice

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

golang 数组初始化中的键值项

在Dave Cheney 的一次酒吧测验中,我发现了以下结构:

a := [...]int{5, 4: 1, 0, 2: 3, 2, 1: 4}
fmt.Println(a)

>> [5 4 3 2 1 0]
Run Code Online (Sandbox Code Playgroud)

游乐场链接

似乎您可以在数组的初始化字段中使用键(4: 1, 0意味着将索引 4 处的元素设置为 1,将索引 5 处的元素设置为 0)。我以前从未见过这样的事情。它的用例是什么?为什么不直接设置特定的索引?

arrays initialization go slice

5
推荐指数
1
解决办法
1992
查看次数

在golang中创建二维字符串数组

我需要创建一个二维字符串数组,如下所示 -

matrix = [['cat,'cat','cat'],['dog','dog']]
Run Code Online (Sandbox Code Playgroud)

代码:-

package main

import (
    "fmt"
)

func main() {
    { // using append

    var matrix [][]string
    matrix[0] = append(matrix[0],'cat')
        fmt.Println(matrix)
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:-

panic: runtime error: index out of range

goroutine 1 [running]:
main.main()
    /tmp/sandbox863026592/main.go:11 +0x20
Run Code Online (Sandbox Code Playgroud)

go

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

Go 中的多维数组

我正在学习 Go,我正在尝试生成一个二维数组 [][]int,它在嵌套的 for 循环中只是在该位置放置一个值。我是否总是必须使用 make 创建固定大小的数组,或者是否可以在循环中动态完成此操作?

genMap := [][]int{}
for i := 0; i < 10; i++ {
    for j := 0; j < 10; j++ {
        genMap[i][j] = 1
    }
}
return genMap
Run Code Online (Sandbox Code Playgroud)

但这会导致错误索引超出范围。所以我不太确定这在 Go 中是否可能,或者我错过了一些重要的东西

arrays go multidimensional-array

3
推荐指数
1
解决办法
7900
查看次数

How to initialize and set a 2D array in golang

I am trying to simplay make a 2D array as a field on an object. I want a function that creates the object and returns it. But when trying to create the 2d array it returns a single array.

type Struct struct {
    X int
    Y int
    Grid [][]bool
}

func NewLifeSimulator(sizeX, sizeY int) *Struct{
    s := &Struct{
        X:    sizeX,
        Y:    sizeY,
        Grid: make([][]bool, sizeX,sizeY),  //Creates a regular array instead of 2D
    }
    return s
}
Run Code Online (Sandbox Code Playgroud)

What do I need …

arrays go

2
推荐指数
1
解决办法
2592
查看次数

在Go中将一个数组附加到另​​一个数组的最快方法是什么?

假设我有数组A并且B在Go中.什么是追加的所有值最快的方式BA

arrays append go slice

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