我已经使用 cgo 开发了一个 pam 模块。不能转换为 []string a ** charfunc pam_sm_authenticate(pamh *C.pam_handle_t, flags C.int, argc C.int, argv **C.char) int { fmt.Println(C.GoString(*argv[0])) return 0}错误是invalid operation: argv[0] (type **C.char does not support indexing)如果你知道,请告诉我。
1 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
从 cgo wiki 拼凑而成:https : //github.com/golang/go/wiki/cgo#Turning_C_arrays_into_Go_slices。
import "C"
import "unsafe"
func GoStrings(argc C.int, argv **C.char) []string {
length := int(argc)
tmpslice := (*[1 << 30]*C.char)(unsafe.Pointer(argv))[:length:length]
gostrings := make([]string, length)
for i, s := range tmpslice {
gostrings[i] = C.GoString(s)
}
return gostrings
}
- 1 回答
- 0 关注
- 219 浏览
添加回答
举报
0/150
提交
取消