【问题标题】:Can I output multi-dimensional slice values using a single line command?我可以使用单行命令输出多维切片值吗?
【发布时间】:2021-09-28 21:59:25
【问题描述】:

给定以下代码:

    arr := [][]string {
        {"foo", "value1"},
        {"bar", "value2"},
        {"poo", "value3"},
    }
    fmt.Println(arr)

获取“value1”、“value2”和“value3”是否有一条线?

我在想:

    fmt.Println(arr[0:])

希望也许有一个选项可以做到这一点:

    fmt.Println(arr[0:[1]])

有没有办法在没有 foreach 循环和将项目附加到新创建的切片的情况下做到这一点?

【问题讨论】:

  • 这是有道理的。我认为有一些我不知道的神奇 Go 功能。
  • 几乎没有理由寻找“单行”,换行符不是需要保存的有限资源。 Go 更注重可读性而不是简洁。
  • 我同意@JimB。即使存在一个单行,在许多情况下也是不好的做法,因为它通常会导致毫无意义的迭代,而不是提前中断或返回

标签: go slice


【解决方案1】:

如果 for 循环对你来说太主流,Go 也支持 goto D:

【讨论】:

    【解决方案2】:

    要在没有foreach循环的情况下单独打印数组值,您必须使用值的索引值。我为相同的场景创建了简单的程序,如下所示:

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        
    
        arr := [][]string{
            {"foo", "value1"},
            {"bar", "value2"},
            {"poo", "value3"},
        }
        fmt.Println(arr[0][1],arr[1][1],arr[2][1])
        
    }
    

    输出:

    value1 value2 value3
    

    【讨论】:

    • 感谢@Gopher,但不幸的是,当您拥有更长的数组时,这无法扩展。
    猜你喜欢
    • 2012-08-20
    • 2011-01-23
    • 2013-07-14
    • 1970-01-01
    • 2018-07-10
    • 2021-08-18
    • 1970-01-01
    • 2021-05-07
    • 2021-04-11
    相关资源
    最近更新 更多