为了账号安全,请及时绑定邮箱和手机立即绑定

如何反转阵列|在高朗中切片而不使用 for 语句

如何反转阵列|在高朗中切片而不使用 for 语句

Go
慕侠2389804 2022-09-12 16:32:35
我正在寻找一种在Golang中反转的方法,而无需使用任何语句。我找不到任何解决方案。我发现这篇文章 如何反转一个切片 go?,但每个解决方案都是使用语句。我知道处理这个问题的最佳方法是使用,但我正在寻找其他解决方案,而不必[][]string|intforforfor list := [][]int{             {2,3,4},              {6,8,1},         }结果是这样的:[[2 3 4] [6 8 1]].但我需要这样的东西:[[6 8 1] [2 3 4]].如果不使用该语句,我该怎么办?有什么想法吗?for
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

如果不使用 for 语句,我该怎么办?有什么想法吗?


递归调用


package main


import (

    "fmt"

)


func main() {

    list := [][]int{

        {2, 3, 4},

        {6, 8, 1},

    }

    reverse(list)

    fmt.Println(list)

}


func reverse(d [][]int) {

    j := len(d) - 1

    i := 0

    var h func()

    h = func() {

        if i<j {

            d[i], d[j] = d[j], d[i]

            i, j = i+1, j-1

            h()

        }

    }

    h()

}

转到语句


package main


import (

    "fmt"

)


func main() {

    list := [][]int{

        {2, 3, 4},

        {6, 8, 1},

    }

    reverse(list)

    fmt.Println(list)

}


func reverse(d [][]int) {

    j := len(d) - 1

    i := 0

START:

    if i < j {

        d[i], d[j] = d[j], d[i]

        i, j = i+1, j-1

        goto START

    }


}


查看完整回答
反对 回复 2022-09-12
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

在这里使用循环 - 是最简单的解决方案。for

PS:您可以尝试使用像这样的硬编码解决方案:

list2 := [][]int{list[1], list[0]}

但它是黑客而不是解决方案,
所以最好使用基于循环的漂亮简洁的程序化解决方案。for


查看完整回答
反对 回复 2022-09-12
  • 2 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信