Comment convertir les types de données à Golang
La conversion de type dans GO doit être effectuée explicitement et ne peut pas être implicitement. Pour les types numériques, utilisez le type cible comme fonction de conversion, tel que INT64 (a), mais faites attention au débordement et à la perte de précision; La conversion entre les chaînes et les nombres nécessite des fonctions telles que ATOI, ParseInt, Parsefloat, ITOA et FormatFloat dans le package STRCONV et gérer les erreurs possibles; Les chaînes et les tranches d'octets peuvent être directement converties les unes aux autres via [] octets (s) et chaîne (b), adaptés aux opérations d'E / S et de réseau; La conversion du type d'interface {} (ou tout) dépend de l'assertion de type x. (Type) ou de type commutateur pour extraire en toute sécurité le type d'origine pour éviter la panique; Les structures ne peuvent être converties directement que lorsque les champs sont complètement cohérents, et il est généralement recommandé de copier ou d'utiliser manuellement les bibliothèques de mappage, tandis que les types personnalisés basés sur des types de base peuvent être convertis via des opérations de conversion explicites. En bref, GO nécessite que toutes les conversions doivent être explicites, garantissant la sécurité de type et réduisant les erreurs potentielles des conversions implicites.
La conversion des types de données dans GO (Golang) est une tâche courante, d'autant plus que GO est typiquement typique et n'autorise pas les conversions de type implicite, même entre des types similaires comme int
et int64
. Vous devez convertir explicitement les valeurs lorsque vous vous déplacez entre différents types. Voici comment gérer les conversions de type communes dans GO.
1. Conversion entre les types numériques
GO nécessite un casting explicite pour les types numériques, même s'ils sont étroitement liés.
var a int = 42 var b int64 = int64 (a) var c float64 = float64 (a) var d uint = uint (c) // être prudent: flotter à int troncise
- Utilisez le type cible comme fonction:
TargetType(value)
- Soyez prudent avec les débordements et les troncatures (par exemple, la conversion d'un grand
float64
enint
peut perdre de précision ou envelopper)
Conversions numériques courantes:
-
int
↔int8
,int16
,int32
,int64
-
int
↔uint
,uint32
,uint64
-
int
↔float32
,float64
⚠️ Validez toujours les plages pour éviter un comportement inattendu.
2. Conversion entre les chaînes et les nombres
Pour convertir les chaînes en numéros et vice versa, utilisez le package strconv
.
Chaîne à numéro
importer "strConv" // chaîne à int num, err: = strConv.oi ("123") Si err! = Nil { log.fatal (err) } // ou plus de contrôle avec Parseint i64, err: = strConv.ParseInt ("123", 10, 64) // base 10, taille bit 64 Si err! = Nil { log.fatal (err) } i: = int (i64) // parsefloat f, err: = strConv.Parsefloat ("3.14", 64) Si err! = Nil { log.fatal (err) }
-
Atoi
est un raccourci pourParseInt(s, 10, 0)
- Le deuxième argument dans
ParseInt
est la base (par exemple, 10 pour décimal, 16 pour hex) - Le troisième est de taille bit (0 signifie inférer, mais généralement 32 ou 64)
Numéro à la chaîne
str: = strCconv.itoa (123) // int à la chaîne // ou utiliser des fonctions de format str = strConv.formatint (123, 10) str = strConv.formatfloat (3.14, 'f', 2, 64) // format 'f', 2 décimales
-
Itoa
est court pourFormatInt(i, 10)
-
FormatFloat
permet le contrôle de la précision et du format ('f'
,'e'
,'g'
)
3. Conversion entre les chaînes et les octets
Les cordes GO sont immuables, tandis que []byte
est une tranche et mutable. La conversion est simple.
S: = "Hello" b: = [] octet (s) // retour à la chaîne S2: = chaîne (b)
- Utile lorsque vous travaillez avec des données d'E / S, de JSON ou de réseau
- Aucune importation nécessaire - Go permet une conversion directe entre
string
et[]byte
Remarque: Lorsque vous traitez du texte non ASCII (par exemple, UTF-8), assurez-vous que votre logique respecte l'encodage.
4. Conversion à et depuis interface{}
(tout)
Dans Go, tout type peut être affecté à interface{}
(pre-go 1.18) ou any
(Go 1.18). Pour extraire le type d'origine, utilisez un type d'affirmation ou de commutation de type.
Assertion de type
var x any = "bonjour" str, ok: = x. (String) // Affirmation de type sûr Si ok { fmt.println (str) } autre { fmt.println ("pas une chaîne") }
- Utilisez
value, ok := interface.(Type)
pour éviter les paniques - Si le type est faux,
ok
serafalse
Type d'interrupteur
func printType (v any) { Switch Val: = v. (Type) { Case String: fmt.println ("String:", Val) cas Int: fmt.println ("int:", val) case float64: fmt.println ("float64:", val) défaut: fmt.println ("type inconnu") } }
Utile lors de la gestion des données dynamiques comme JSON Unmarshaling.
5. Convertir des structures et des types de personnalité
Vous pouvez convertir entre les types de structure s'ils ont la même structure sous-jacente.
Tapez user struct { Chaîne de noms Âge int } type admin struct { Chaîne de noms Âge int } u: = utilisateur {"bob", 30} a: = admin (u) // ne fonctionne que si les champs correspondent exactement
- Pas de pratique courante - Better pour copier les champs manuellement ou utiliser des bibliothèques comme
mapper
si nécessaire - Ne fonctionne que si tous les champs correspondants sont identifiés au nom, au type et à l'ordre
Pour les types nommés personnalisés basés sur les primitives:
Tapez l'utilisateur INT64 var id userId = userId (42) var num int64 = int64 (id)
Résumé
- Utilisez la coulée directe pour les types numériques:
TargetType(value)
- Utilisez
strconv
pour les conversions de chaîne / nombre - Convertir entre
string
et[]byte
directement - Utilisez des assertions ou des commutateurs de type pour
interface{}
ouany
- Soyez prudent avec les débordements, la perte de précision et les conversions non valides
La conversion de type dans GO est explicite et sûre lorsque vous faites attentivement. Gérez toujours les erreurs (en particulier dans strconv
) et validez les hypothèses sur les données.
Fondamentalement, Go vous fait réfléchir à ce que vous convertiez - il n'y a pas de coercition automatique, ce qui empêche de nombreux bugs.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Dans GO, le mode observateur peut être implémenté via des interfaces et des canaux, l'interface d'observateur peut être définie, l'interface d'observateur comprend la méthode de mise à jour, la structure du sujet maintient la liste des observateurs et le canal de message, ajouter des observateurs via la pièce jointe, notifie les messages, le service de mise en œuvre de listengoroutine Observer et déclenche des événements, et réalise un mécanisme de notification d'événements à couplage lâche, qui convient aux systèmes axés sur les événements, à la journalisation et aux notifications de messages et à d'autres scénarios.

En utilisant le package d'intégration de Go, vous pouvez intégrer des ressources statiques directement dans des fichiers binaires. À partir de GO1.16, en utilisant la directive // go: ENCHED avant les variables, un seul fichier, plusieurs fichiers ou des répertoires entiers peut être incorporé, en prenant en charge la chaîne, [] octet ou les types embed.fs. La teneur en intégrée est solidifiée en binaire au temps de compilation. Le chemin doit exister et est sensible à la casse. Il est recommandé d'utiliser des outils intégrés au lieu d'outils tiers tels que Go-Bindata. Cette méthode est simple et efficace et est devenue une pratique standard.

Oui, en utilisant la bibliothèque Standard Go, vous pouvez créer une API RESTful, gérer les demandes via le contexte Net / HTTP, Encoding / JSON et la gestion du contexte, combiné avec HTTP.Servermux Routing, une résolution de chemin manuelle, une encapsulation au middleware et une gestion des erreurs appropriée, vous pouvez obtenir un service léger et contrôlable RESTUL SERVICE SUR LE MANGEMENT SUR LE TRADRESS mécanisme.

FMT.Sprintf est utilisé pour formater et retourner les chaînes, adaptées à l'insertion et au stockage variables; 2.fmt.fprintf écrit des résultats formatés directement sur io.writer, adaptés à l'écriture de fichiers ou de réseau; 3.Strings.join est utilisé pour connecter efficacement les tranches de chaîne; 4. Les opérateurs conviennent à des coutures uniques simples; 5. STRINGS.builder offre des performances élevées lors de la boucle ou des coutures à grande échelle; 6.Package de goûts convient à la génération de texte dynamique complexe basée sur des données, telles que les fichiers HTML ou de configuration. La méthode appropriée doit être sélectionnée en fonction des performances, de la lisibilité et du scénario pour se terminer avec une phrase complète.

Middlewareingowebserversafunction aterttercepthttprequestsboreetheyreachthehandler, permettre à la transformation de la transmission de la transmission; ils enworkbywrapinghandlerstoaddpre-andpost-processingLogicsuchy

La conversion de type dans GO doit être effectuée explicitement et ne peut pas être implicitement. Pour les types numériques, utilisez le type cible comme fonction de conversion, tel que INT64 (a), mais faites attention au débordement et à la perte de précision; La conversion entre les chaînes et les nombres nécessite l'utilisation de fonctions telles que ATOI, ParseInt, parsefloat, itoa et formatfloat dans le package STRCONV et gérer les erreurs possibles; Les chaînes et les tranches d'octets peuvent être directement converties les unes aux autres via [] octets (s) et chaîne (b), ce qui convient aux opérations d'E / S et de réseau; La conversion de l'interface {} (ou n'importe quel) type dépend de l'affirmation de type x. (type) ou de type commutateur pour extraire en toute sécurité le type d'origine, en évitant l'utilisation de la conversion de l'interface {} (ou tout autre) Type de type Affirmation de type x. (type) ou commutateur de type pour éviter pour éviter le commutateur pour éviter pour éviter le commutateur

TopReventDatatatyPeConversionErrorSinsIC, utiliseaFeconversionFunctionSliketyt

Table-DriventingingOsapatterNTHATUSADATASTURTURE, Généralement en cas d'élite des instruments, les todémultiplestres de contribution à l'instar destinés, ce qui permet de réaliser la réduction de la manière dont la manière
