Maison > développement back-end > Golang > Structure vide ou interface vide : quelle est la meilleure valeur de carte dans Go ?

Structure vide ou interface vide : quelle est la meilleure valeur de carte dans Go ?

Susan Sarandon
Libérer: 2024-12-01 03:32:13
original
533 Les gens l'ont consulté

Empty Struct or Empty Interface: Which is the Better Map Value in Go?

Interface vide ou structure vide comme valeurs de carte

Dans Go, les cartes sont utilisées pour stocker des paires clé-valeur. Le type de valeur d'une carte peut être n'importe quel type, y compris les interfaces ou les structures. Bien que les interfaces vides et les structures vides puissent toutes deux être utilisées pour représenter l'absence d'une valeur dans une carte, il existe quelques différences clés entre les deux.

Utilisation de la mémoire

Les structures vides ont une taille fixe de 0 octet, quelle que soit l'architecture. En revanche, les interfaces vides ont une taille de 8 octets sur les architectures 32 bits et de 16 octets sur les architectures 64 bits. En effet, les interfaces vides stockent un pointeur vers la valeur réelle, même si cette valeur est nulle.

L'exemple de code fourni dans la question démontre cette différence :

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var s struct{}
    fmt.Println(unsafe.Sizeof(s))
    var i interface{}
    fmt.Println(unsafe.Sizeof(i))
    var b bool
    fmt.Println(unsafe.Sizeof(b))
}
Copier après la connexion

Sortie (octets pour l'architecture 32 bits) :

0
8
1
Copier après la connexion

Sortie (octets pour l'architecture 64 bits) architecture):

0
16
1
Copier après la connexion

Comme vous pouvez le voir, une structure vide a une surcharge de mémoire de 0 octet, tandis qu'une interface vide a une surcharge de 8 octets (32 bits) ou 16 octets ( 64 bits).

Performances

L'utilisation d'une structure vide est généralement plus efficace que d'utiliser une interface vide en termes de performances. En effet, le compilateur peut optimiser plus efficacement les opérations impliquant des structures vides.

Conclusion

Le choix entre une interface vide et une structure vide car le type de valeur d'une carte dépend sur les exigences spécifiques de la demande. Si l'utilisation de la mémoire est un problème, une structure vide est le meilleur choix. Pour des raisons de performances, une structure vide est également préférable. Toutefois, si la carte est destinée à être utilisée avec divers types de valeurs, une interface vide peut être plus appropriée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal