【发布时间】:2018-03-28 03:51:59
【问题描述】:
我正在尝试调用一个 C 函数,该函数需要来自 go 的 C 字符串 (char*)。我知道cgo documentation 中记录的C.CString 函数,但由于我正在调用的函数已经制作了一个副本,我试图避免使用Cstring 制作的那个。
现在,我正在这样做,s 是一个 go 字符串
var cs *C.char = (*C.char)( unsafe.Pointer(& []byte(s) [0]))
但我感觉[]bytes(s) 正在制作自己的副本。是否有可能只获得 char* ?
【问题讨论】:
-
没有安全的方法,是的,
[]byte(s)转换会生成副本,因为字符串是不可变的。 -
我不介意不安全的方式