I'm trying to rewrite a C code in Go, and what I notice is that the code that I try to rewrite follows a lot one common pattern. Many of the functions accept unsigned char
arrays, passed as pointer, and either when calling the functions or at some other part of the function we add some value to the char
pointer, as doing arithmetic. Here is a simple example just for demonstration purposes.
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;
}
}
What is a proper way to convert something like this to Go? I started to use byte
slices in order to represent the char
arrays, but I don't know how to exactly transfer those arithmetic expression with char
into arithmetic with ranges/indexes in Go. I ended up having something like this:
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
}
}
Any idea how to convert something like above from C to Go?