簡體   English   中英

cgo **char 切片字符串

[英]cgo **char to slice string

我已經使用 cgo 開發了一個 pam 模塊。 不能轉換為 []string a ** char

func 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)

如果你知道,請告訴我。

從 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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM