Функция C.GoString

Функция C.GoString преобразует C-строку (указатель на char) в строку Go. Она принимает один параметр - указатель на первый символ C-строки, завершающейся нулевым байтом, и возвращает строку Go.

Синтаксис

goC.GoString(cstr)

Пример

Давайте создадим C-строку и преобразуем ее в строку Go:

gopackage 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)
}

Результат выполнения кода:

go"Hello from C"

Пример

Давайте получим C-строку из C-функции и преобразуем ее в строку Go:

gopackage 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)
}

Результат выполнения кода:

go"GoLang"

Смотрите также

  • функцию C.CString,
    которая выполняет обратное преобразование - из строки Go в C-строку
  • функцию C.GoStringN,
    которая преобразует C-строку в строку Go с указанием длины
  • функцию C.free,
    которая освобождает память, выделенную под C-строку
  • функцию C.GoBytes,
    которая преобразует C-массив байт в срез байт Go