c - 将 C 移植到 Go,在 if 检查中修改变量

标签 c go porting

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

if (x == 0 || x-- == 0) {
    // Stuff
}

这在 Go 中是不合法的,因为我不能在检查子句中修改 x

没有例如,在 Go 中表示它的好方法是什么?复制 block 的内容?

最佳答案

如果 x-- 是一个拼写错误,应该是 --x,那么我将对 x 进行明确的更改:

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

    // Stuff
} else {
    x--
}

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

if (x == 0) {
    // Stuff
} else {
    x--;
}

关于c - 将 C 移植到 Go,在 if 检查中修改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48610855/

相关文章:

GORM 递归预加载

sql - FormValue 始终是一个空映射

string - golang - 字符串排列 - slice 边界超出范围

c# - 无法识别某些 C# 语法以转换为 VB.NET

c++ - Cygwin 端口不工作 => 在启动时立即退出

C 使用 getopt_long()

c - 在 core_cm4.h 上,为什么会有类似 ((uint32_t)(int32_t)IRQn) 的转换?

c - 我的特殊字符计数器出了什么问题?

C 前向引用结构 - 1) 必须带有指针? 2)必须初始化?

c - 在 Linux 上获取当前进程的环境变量