2012-04-21 115 views

回答

5

像這樣的東西應該工作:

s := make([]byte, 256) 
C.fooGetString((*C.char)(unsafe.Pointer(&s[0])), C.int(len(s))) 
+1

這個答案是不正確。 – 2012-04-22 14:34:34

+0

我最初忘了在這裏留言,但我更新了這個答案,以便它是正確的,因爲它被標記爲正確的答案。 – 2012-08-16 13:29:14

5
package main 

// #include <string.h> 
// void foo(char *s, int len) { 
//  strncpy(s, "foo", len); 
// } 
import "C" 

import "fmt" 
import "unsafe" 

func main() { 
    buf := make([]byte, 256) 
    C.foo((*C.char)(unsafe.Pointer(&buf[0])), C.int(len(buf))) 
    fmt.Println(string(buf)) 
} 

輸出:

foo 
相關問題