go - Go中如何调整二维数组的大小?

标签 go

我编写了一个读取输入行并检查行是否以 # 开头的程序。
如果是,则当前行和下一行将保存在二维数组中同一行的两列中:

Go Playground

package main

import (
        "bufio"
        "fmt"
        "strings"
)

func main() {
        const input = "#FooBar1\nFooBar1\n#Foobar2\nFooBar2\n#FooBar3\nFooBar3"

        var multiDimArr [3][2]string
        var lineCount int

        scanner := bufio.NewScanner(strings.NewReader(input))
        for line := 0; scanner.Scan(); line++ {
                if strings.HasPrefix(scanner.Text(), "#") {
                        multiDimArr[line][0] = scanner.Text()
                        scanner.Scan()
                        multiDimArr[line][1] = scanner.Text()
                        lineCount++
                }
        }
        for i := 0; i < lineCount; i++ {
                for j := 0; j < 2; j++ {
                        fmt.Printf("multiDimArr[%d][%d] = %s\n", i, j, multiDimArr[i][j])
                }
        }
}

输出:

multiDimArr[0][0] = #FooBar1
multiDimArr[0][1] = FooBar1
multiDimArr[1][0] = #Foobar2
multiDimArr[1][1] = FooBar2
multiDimArr[2][0] = #FooBar3
multiDimArr[2][1] = FooBar3

我的问题是在构建程序时我需要知道输入的行数,所以我可以调整multiDimArr的大小。

我可以做任何事情让它占用任意数量的行吗?

最佳答案

尝试 this variation :

package main

import (
    "bufio"
    "fmt"
    "strings"
)

func main() {
    const input = "#FooBar1\nFooBar1\n#Foobar2\nFooBar2\n#FooBar3\nFooBar3"

    var multiDimArr [][2]string

    scanner := bufio.NewScanner(strings.NewReader(input))
    for scanner.Scan() {
        if strings.HasPrefix(scanner.Text(), "#") {
            firstLine := scanner.Text()
            scanner.Scan()
            secondLine := scanner.Text()
            multiDimArr = append(multiDimArr, [2]string{firstLine, secondLine})
        }
    }
    for i, row := range multiDimArr {
        for j, line := range row {
            fmt.Printf("multiDimArr[%d][%d] = %s\n", i, j, line)
        }
    }
}

关于go - Go中如何调整二维数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809664/

相关文章:

dictionary - 我可以有检查键是否在 map 中的功能吗?

mysql - 如何为使用 MySQL 数据库而不是内存存储的 OpenID 实现自己的接口(interface)

go - 如何在运行测试之前自动清理 Visual Code 中的 go 缓存?

optimization - 如何在 Golang 中获取指向任何数据类型值的字节指针?

mysql - PostgreSQL pq 打开不成功 : x509: certificate signed by unknown authority

google-app-engine - 身份 Google App Engine 环境类型

tcp - 在 go 中通过套接字发送 int64 的正确方法

go - 是否可以从 channel ch 读取 len(ch) 消息?

Go, Golang : array type inside struct, 缺少类型复合文字

go - 是否有一种惯用的方法来打印字符串指针内容或 nil?