gpt4 book ai didi

go - cgo **char slice 字符串

转载 作者:IT王子 更新时间:2023-10-29 01:45:23 26 4
gpt4 key购买 nike

我已经使用 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]))
返回 0
}

错误是


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

如果你知道请告诉我。

最佳答案

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

关于go - cgo **char slice 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36188649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com