将C移植到Go会修改if检查中的变量

Kri*_*ass 4 c porting go

我正在尝试将以下C代码移植到Go:

if (x == 0 || x-- == 0) {
    // Stuff
}
Run Code Online (Sandbox Code Playgroud)

这在Go中是不合法的,因为我无法x在check子句中进行修改.

在Go中表示这种情况的好方法是什么,例如没有复制块的内容?

Ble*_*der 5

如果x--是拼写错误,应该是--x,那么我会将更改变为x显式:

if x == 0 || x == 1 {
    x = 0

    // Stuff
} else {
    x--
}
Run Code Online (Sandbox Code Playgroud)

否则,您的C代码有错误.如果x == 0为false,那么x-- == 0也将为false,因为您正在使用后增量运算符.因此,代码相当于:

if (x == 0) {
    // Stuff
} else {
    x--;
}
Run Code Online (Sandbox Code Playgroud)