我正在用Go重写一些C代码。在我的C代码中,我有这样的东西:
static void sharedb(unsigned char *sharedkey, unsigned char *send,
const unsigned char *received) {
unsigned char krq[96];
unsigned char buf[64];
// rest removed for brevity
indcpa_enc(send, buf, received, krq + 32);
}其中indcpa_enc函数的定义如下:
static void indcpa_enc(unsigned char *c,
const unsigned char *m,
const unsigned char *pk,
const unsigned char *coins)因此,在我的Go代码中,我没有使用char数组,而是使用了byte数组。我有这样的东西:
func SharedB(sharedKey, send, received []byte) {
var krq [96]byte
var buf [64]byte
// rest removed for brevity
INDCPAEnc(send[:], buf[:SharedKeyBytes], received[:], krq[32:32+CoinBytes])
}其中INDCPAEnc函数的定义如下:
func INDCPAEnc(c []byte, m [SharedKeyBytes]byte, pk []byte, coins [CoinBytes]byte) 不过,Go中的函数调用给了我一个数组,涉及类型不匹配。如何将上述C代码转换为适当的Go代码?此外,我是否应该使用指针表示法*作为我的Go函数参数,就像C中的那样?
发布于 2017-08-09 13:59:13
指定长度的参数(例如[SharedKeyBytes]byte)是数组,而不是片;因此,您不能传递一个片,因此类型错配错误。你可以:
[]byte)https://stackoverflow.com/questions/45592817
复制相似问题