【发布时间】:2022-01-26 03:21:44
【问题描述】:
我试图在 doc 中理解 golang 的语法,但有些东西即使他们解释也很难理解。
例如:
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
我把它翻译成原始代码:
func reverseString2(str string) string {
var array = []rune(str)
for i := 0; i < len(str)/2; i++ {
for j := len(str) - 1; ???? ; j-- {
// ---
}
}
return string(array)
}
我的问题是在第一个for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 中,j 似乎没有条件,所以在我的代码中我不知道如何解决它。
【问题讨论】:
-
这 2 个不等价:
i, j = i+1, j-1每次迭代都会发生这种情况,都是递增的。在不显着更改算法的情况下,您无法真正将第一个单循环转换为嵌套循环。 -
等价物是怎样的?
-
你不能有嵌套循环的 equivalent 实现:这将是一些完全不同的算法。
标签: go