将C数组和指针代码转换为Go

错别字:

我正在尝试用Go重写C代码,而我注意到的是,我尝试重写的代码遵循许多常见的模式。许多函数接受unsigned char作为指针传递的数组,并且在调用函数或函数的其他部分时,我们会char在进行算术运算时指针添加一些值这是一个简单的示例,仅用于演示目的。

static void func1(unsigned char *r) {
    int i;
    for (i = 0; i < CONSTANT; i++)
        func2(r + i * OTHER_CONSTANT);
}

static void func2(const unsigned char *a) {
    unsigned int i;
    for (i = 0; i < CONSTANT; i += 8) {
        // do some stuff
        a += 3;
    }
}

将此类内容转换为Go的正确方法是什么?我开始使用byte切片来表示char数组,但是我不知道如何char在Go中将这些算术表达式准确地转换为带范围/索引的算术。我最终遇到了这样的事情:

func func1(r []byte) {
    for i := 0; i < CONSTANT; i++ {
        func2(r + i*OTHER_CONSTANT) // This just doesn't work
    }
}
func func2(a []byte) {
    for i := 0; i < CONSTANT; i += 8 {
        // do some stuff
        a += 3 // This doesn't work
    }
}

知道如何将上述内容从C转换为Go吗?

蒂姆·库珀:

您想要切片ra,您可以通过以下方式进行切片

func func1(r []byte) {
    for i := 0; i < CONSTANT; i++ {
        func2(r[i*OTHER_CONSTANT:])
    }
}
func func2(a []byte) {
    for i := 0; i < CONSTANT; i += 8 {
        // do some stuff
        a = a[3:]
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章