Heim >Backend-Entwicklung >Golang >Wie kann ich die Speichergröße von Variablen in Go bestimmen?

Wie kann ich die Speichergröße von Variablen in Go bestimmen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-22 08:38:10947Durchsuche

How Can I Determine the Memory Size of Variables in Go?

Die Geheimnisse der variablen Speichergröße entschlüsseln

Das Ermitteln der Speichergröße einer Variablen ist ein entscheidender Aspekt der Speicherverwaltung in der Programmierung. In Go ermöglicht Ihnen die Funktion „unsafe.Sizeof“, diese wertvollen Informationen aufzudecken.

Syntax:

func Sizeof(x interface{}) uintptr

Verwendung:

Um die Speichergröße einer Variablen zu bestimmen, übergeben Sie diese einfach als Argument an „unsafe.Sizeof“. Es gibt die Größe in Bytes zurück, die der Variablenwert einnimmt.

import "unsafe"

var i int = 1
fmt.Printf("Size of i: %d bytes", unsafe.Sizeof(i))

Beispiel:

Der folgende Code zeigt, wie man die Speichergröße verschiedener Daten ermittelt Typen:

package main

import "fmt"
import "unsafe"

func main() {
    a := int(123)
    b := int64(123)
    c := "foo"
    d := struct {
        FieldA float32
        FieldB string
    }{0, "bar"}

    fmt.Printf("a: %T, %d bytes\n", a, unsafe.Sizeof(a))
    fmt.Printf("b: %T, %d bytes\n", b, unsafe.Sizeof(b))
    fmt.Printf("c: %T, %d bytes\n", c, unsafe.Sizeof(c))
    fmt.Printf("d: %T, %d bytes\n", d, unsafe.Sizeof(d))
}

Ausgabe:

a: int, 4 bytes
b: int64, 8 bytes
c: string, 3 bytes
d: struct { FieldA float32; FieldB string }, 16 bytes

Hinweis:

"unsafe.Sizeof" sollte verwendet werden vorsichtig, da es bei unsachgemäßer Verwendung zu undefiniertem Verhalten führen kann. Einige Plattformen schränken möglicherweise auch die Verwendung ein, ähnlich wie beim Paket „reflect“, das auch eine Methode zum Abrufen der Speichergröße einer Variablen über „reflect.TypeOf(variable).Size()“ bereitstellt.

Das obige ist der detaillierte Inhalt vonWie kann ich die Speichergröße von Variablen in Go bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn