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

Функция unsafe.Sizeof

Функция unsafe.Sizeof возвращает размер в байтах, который занимает переданное ей значение в памяти компьютера. В первый параметр мы передаем значение любого типа, а функция возвращает его размер в виде числа типа uintptr. Эта функция находится в пакете unsafe и относится к низкоуровневым операциям, поэтому требует осторожного использования.

Синтаксис

unsafe.Sizeof(value)

Пример

Давайте получим размер целого числа типа int:

package main import ( "fmt" "unsafe" ) func main() { var num int = 42 res := unsafe.Sizeof(num) fmt.Println(res) }

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

"8"

Пример

Давайте сравним размеры различных числовых типов:

package main import ( "fmt" "unsafe" ) func main() { var i8 int8 = 1 var i16 int16 = 1 var i32 int32 = 1 var i64 int64 = 1 fmt.Println(unsafe.Sizeof(i8)) fmt.Println(unsafe.Sizeof(i16)) fmt.Println(unsafe.Sizeof(i32)) fmt.Println(unsafe.Sizeof(i64)) }

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

"1" "2" "4" "8"

Пример

Давайте получим размер строки и слайса:

package main import ( "fmt" "unsafe" ) func main() { str := "abcde" slice := []int{1, 2, 3, 4, 5} fmt.Println(unsafe.Sizeof(str)) fmt.Println(unsafe.Sizeof(slice)) }

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

"16" "24"

Пример

Давайте получим размер структуры с полями разных типов:

package main import ( "fmt" "unsafe" ) type Person struct { Name string Age int32 IsActive bool } func main() { p := Person{Name: "John", Age: 30, IsActive: true} res := unsafe.Sizeof(p) fmt.Println(res) }

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

"24"

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

  • функцию unsafe.Alignof,
    которая возвращает выравнивание значения в памяти
  • функцию unsafe.Offsetof,
    которая возвращает смещение поля структуры в байтах
  • тип unsafe.Pointer,
    который позволяет работать с указателями произвольных типов
  • функцию unsafe.Add,
    которая выполняет арифметику указателей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить