2016-03-23 20 views
0

私はcgoを使用してpamモジュールを開発しました。 []は文字列に変換することはできません。**文字cgo **文字列をスライスする

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)

です。

答えて

0

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 
} 
関連する問題