cgo**字符到切片字符串

cgo**字符到切片字符串,go,cgo,Go,Cgo,我使用cgo开发了一个pam模块。 无法转换为[]字符串**字符 func pam_sm_authenticate(pamh*C.pam_handle_t,标志C.int、argc.int、argv**C.char)int{ fmt.Println(C.GoString(*argv[0])) 返回0 } 错误是 无效操作:argv[0](类型**C.char不支持索引) 如果您知道,请告诉我。从cgo维基拼凑而成: 导入“C” 进口“不安全” func GoStrings(argc.in

我使用cgo开发了一个pam模块。 无法转换为[]字符串**字符


func pam_sm_authenticate(pamh*C.pam_handle_t,标志C.int、argc.int、argv**C.char)int{
fmt.Println(C.GoString(*argv[0]))
返回0
}

错误是


无效操作:argv[0](类型**C.char不支持索引)


如果您知道,请告诉我。

从cgo维基拼凑而成:

导入“C”
进口“不安全”
func GoStrings(argc.int,argv**C.char)[]字符串{
长度:=int(argc)
tmpslice:=(*[1
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
}