Table des matières
1. Conversion entre les types numériques
2. Conversion entre les chaînes et les nombres
Chaîne à numéro
Numéro à la chaîne
3. Conversion entre les chaînes et les octets
4. Conversion à et depuis interface{} (tout)
Assertion de type
Type d'interrupteur
5. Convertir des structures et des types de personnalité
Résumé
Maison développement back-end Golang Comment convertir les types de données à Golang

Comment convertir les types de données à Golang

Aug 19, 2025 pm 02:43 PM
golang Conversion de type de données

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.

Comment convertir les types de données à Golang

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 en int peut perdre de précision ou envelopper)

Conversions numériques courantes:

  • intint8 , int16 , int32 , int64
  • intuint , uint32 , uint64
  • intfloat32 , 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 pour ParseInt(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 pour FormatInt(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 sera false

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{} ou any
  • 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!

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Stock Market GPT

Stock Market GPT

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

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment implémentez-vous un modèle d'observateur à Golang? Comment implémentez-vous un modèle d'observateur à Golang? Aug 14, 2025 pm 12:04 PM

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.

Comment intégrer des actifs statiques dans un binaire de Golang Comment intégrer des actifs statiques dans un binaire de Golang Aug 30, 2025 am 04:50 AM

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.

Comment construire une API reposante sans cadre à Golang Comment construire une API reposante sans cadre à Golang Aug 20, 2025 am 01:47 AM

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.

Quelles sont les différentes façons de formater les chaînes à Golang? Quelles sont les différentes façons de formater les chaînes à Golang? Aug 23, 2025 pm 01:25 PM

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.

Que sont les middleware dans le contexte des serveurs Web Golang? Que sont les middleware dans le contexte des serveurs Web Golang? Sep 16, 2025 am 02:16 AM

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

Comment convertir les types de données à Golang Comment convertir les types de données à Golang Aug 19, 2025 pm 02:43 PM

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

Comment gérer les erreurs de conversion de type de données dans SQL Comment gérer les erreurs de conversion de type de données dans SQL Sep 02, 2025 am 07:50 AM

TopReventDatatatyPeConversionErrorSinsIC, utiliseaFeconversionFunctionSliketyt

Qu'est-ce que les tests axés sur la table à Golang? Qu'est-ce que les tests axés sur la table à Golang? Aug 28, 2025 am 01:38 AM

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

See all articles