Функция C.GoString
Функция C.GoString преобразует C-строку (указатель на char)
в строку Go. Она принимает один параметр - указатель на первый символ
C-строки, завершающейся нулевым байтом, и возвращает строку Go.
Синтаксис
C.GoString(cstr)
Пример
Давайте создадим C-строку и преобразуем ее в строку Go:
package main
/*
#include <stdlib.h>
*/
import "C"
import "fmt"
func main() {
cstr := C.CString("Hello from C")
defer C.free(unsafe.Pointer(cstr))
res := C.GoString(cstr)
fmt.Println(res)
}
Результат выполнения кода:
"Hello from C"
Пример
Давайте получим C-строку из C-функции и преобразуем ее в строку Go:
package main
/*
#include <string.h>
#include <stdlib.h>
char* get_message() {
char* msg = malloc(12);
strcpy(msg, "GoLang");
return msg;
}
*/
import "C"
import "fmt"
import "unsafe"
func main() {
cstr := C.get_message()
defer C.free(unsafe.Pointer(cstr))
res := C.GoString(cstr)
fmt.Println(res)
}
Результат выполнения кода:
"GoLang"
Смотрите также
-
функцию
C.CString,
которая выполняет обратное преобразование - из строки Go в C-строку -
функцию
C.GoStringN,
которая преобразует C-строку в строку Go с указанием длины -
функцию
C.free,
которая освобождает память, выделенную под C-строку -
функцию
C.GoBytes,
которая преобразует C-массив байт в срез байт Go