Golang CGO无法使用转换的string

我试图设置使用CGO和Windows C头的Windows命令提示符的标题:

// #include <windows.h> import "C" import "unsafe" func Title(title string) { ctitle := C.CString(title) defer C.free(unsafe.Pointer(ctitle)) C.SetConsoleTitle(ctitle) } 

但在编译时,会出现以下错误:

 cannot use ctitle (type *C.char) as type *C.CHAR in argument to _Cfunc_SetConsoleTitle 

看起来, C.SetConsoleTitle(ctitle)期待一个*C.CHARtypes的string,但C.CString(title)正在返回*C.char

我应该如何将string转换为预期的types?

我找到了一个解决方案,你可以将指针转换为*C.CHAR

 // #include <windows.h> import "C" import "unsafe" func Title(title string) { ctitle := unsafe.Pointer(C.CString(title)) defer C.free(ctitle) C.SetConsoleTitle((*C.CHAR)(ctitle)) }