for-loop - 我如何改进代码?

标签 for-loop go slice

我是编程初学者。我可以在 golang for 循环中使用两个元素吗?如果您知道答案或我应该阅读的 Material ,请帮助我。

package main

import (
    "fmt"
)

func main() {
    x := []int{
        48, 96, 86, 68,
        57, 82, 63, 70,
        37, 34, 83, 27,
        19, 97, 9, 17,
    }

    for a := 0, b := 1; a++, b++ {
        if x[a] > x[b] {
            x = append(x[:1], x[1+1:]...)
            fmt.Println("x[1+1:]x)", x)
        } else {
            x = append(x[:0], x[0+1:]...)
            fmt.Println("x[0+1:]x)", x)
        }
    }

}

最佳答案

是的,你可以,尽管在这种情况下没有必要。

syntax 函数修复代码中的语法和其他错误,以便您的代码运行并产生输出。 idiom 函数以更惯用的形式重写您的代码。

package main

import (
    "fmt"
)

func syntax() {
    x := []int{
        48, 96, 86, 68,
        57, 82, 63, 70,
        37, 34, 83, 27,
        19, 97, 9, 17,
    }

    for a, b := 0, 1; a < len(x) && b < len(x); a, b = a+1, b+1 {
        if x[a] > x[b] {
            x = append(x[:1], x[1+1:]...)
            fmt.Println("x[1+1:]x)", x)
        } else {
            x = append(x[:0], x[0+1:]...)
            fmt.Println("x[0+1:]x)", x)
        }
    }
}

func idiom() {
    x := []int{
        48, 96, 86, 68,
        57, 82, 63, 70,
        37, 34, 83, 27,
        19, 97, 9, 17,
    }

    for i := 1; i < len(x); i++ {
        if x[i-1] > x[i] {
            x = append(x[:1], x[1+1:]...)
            fmt.Println("x[1+1:]x)", x)
        } else {
            x = append(x[:0], x[0+1:]...)
            fmt.Println("x[0+1:]x)", x)
        }
    }
}

func main() {
    syntax()
    fmt.Println()
    idiom()
}

输出:

$ go run beginner.go
x[0+1:]x) [96 86 68 57 82 63 70 37 34 83 27 19 97 9 17]
x[1+1:]x) [96 68 57 82 63 70 37 34 83 27 19 97 9 17]
x[0+1:]x) [68 57 82 63 70 37 34 83 27 19 97 9 17]
x[0+1:]x) [57 82 63 70 37 34 83 27 19 97 9 17]
x[1+1:]x) [57 63 70 37 34 83 27 19 97 9 17]
x[1+1:]x) [57 70 37 34 83 27 19 97 9 17]
x[0+1:]x) [70 37 34 83 27 19 97 9 17]
x[0+1:]x) [37 34 83 27 19 97 9 17]

x[0+1:]x) [96 86 68 57 82 63 70 37 34 83 27 19 97 9 17]
x[1+1:]x) [96 68 57 82 63 70 37 34 83 27 19 97 9 17]
x[0+1:]x) [68 57 82 63 70 37 34 83 27 19 97 9 17]
x[0+1:]x) [57 82 63 70 37 34 83 27 19 97 9 17]
x[1+1:]x) [57 63 70 37 34 83 27 19 97 9 17]
x[1+1:]x) [57 70 37 34 83 27 19 97 9 17]
x[0+1:]x) [70 37 34 83 27 19 97 9 17]
x[0+1:]x) [37 34 83 27 19 97 9 17]

点击链接获取A Tour of Go .

关于for-loop - 我如何改进代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42545407/

相关文章:

Python 在函数内使用 For 循环

java - 具有多个变量的Scala for循环

pointers - go map,键是字符串,值是指向结构的指针

vim - 如何查看特定 go 函数的文档?

python - 使用不同的 DataFrame 更改 pandas DataFrame 切片中的值

c - 为什么在 C 中永远递减一个 unsigned int 循环?

c++ - 为循环优雅地并行初始化 openmp 线程

go - SendGrid SMTP 电子邮件不会发送到 Go 中的抄送和密件抄送地址

json - 在 Go 中,如何将 JSON 对象数组转换为具有默认值的结构数组?

python - 正则表达式字符串切片