РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1576 of 1593 menu

Тип C.int

Тип C.int используется в cgo для представления 32-битного целого числа со знаком, соответствующего типу int в языке C. В Go этот тип является псевдонимом для int32 и занимает 4 байта в памяти. При передаче данных между Go и C необходимо явно преобразовывать значения в C.int и обратно, так как типы int в Go могут иметь разрядность в зависимости от архитектуры.

Синтаксис

var i C.int = 42 goInt := int(i) // преобразование C.int в Go int cInt := C.int(goInt) // преобразование Go int в C.int

Пример

Давайте создадим простую C-функцию, которая принимает C.int и возвращает его удвоенное значение. Затем вызовем эту функцию из Go:

package main /* #include <stdio.h> int doubleInt(int x) { return x * 2; } */ import "C" import "fmt" func main() { value := 21 cValue := C.int(value) result := C.doubleInt(cValue) fmt.Println(result) }

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

42

Пример

Рассмотрим пример работы с массивом целых чисел, передавая указатель на C.int из Go в C:

package main /* #include <stdio.h> void printInts(int *arr, int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } */ import "C" import "fmt" func main() { goInts := []int{10, 20, 30, 40, 50} cInts := make([]C.int, len(goInts)) for i, v := range goInts { cInts[i] = C.int(v) } C.printInts(&cInts[0], C.int(len(cInts))) fmt.Println("Done") }

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

"10 20 30 40 50 " "Done"

Пример

Покажем, как правильно обрабатывать возвращаемое значение типа C.int и преобразовывать его в тип int для дальнейшей работы в Go:

package main /* #include <stdlib.h> int getRandomNumber() { return rand() % 100; } */ import "C" import "fmt" func main() { cRandom := C.getRandomNumber() goRandom := int(cRandom) fmt.Printf("Random number: %d\n", goRandom) }

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

"Random number: 42"

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

  • тип C.char,
    который соответствует типу char в языке C
  • тип C.long,
    который соответствует типу long в языке C
  • функцию C.CString,
    которая преобразует Go-строку в C-строку
  • функцию C.free,
    которая освобождает память, выделенную в C
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить