Maison >développement back-end >Golang >Comment convertir des données en Golang

Comment convertir des données en Golang

王林
王林original
2023-05-13 13:27:08519parcourir

En tant que langage de programmation efficace et concis, Golang est également très flexible dans la conversion de données. Cet article explorera certaines méthodes de conversion de types de données dans Golang, ainsi que quelques considérations sur les applications pratiques.

1. Conversion de type de données de base

  1. Convertir le type de chaîne en type int

La conversion de caractères peut être utilisée Atoi fonction fournie par le package strconv. Si la conversion échoue, 0 est renvoyé.

Exemple de code :

package main

import (
    "fmt"
    "strconv"
)

func main() {
    str := "123"
    num, err := strconv.Atoi(str)
    if err != nil {
        fmt.Println("转换失败")
    } else {
        fmt.Println("转换结果为:", num)
    }
}
  1. int type to string type

Pour convertir des nombres en caractères, vous pouvez utiliser la fonction Itoa du package strconv fournie.

Exemple de code :

package main

import (
    "fmt"
    "strconv"
)

func main() {
    num := 123
    str := strconv.Itoa(num)
    fmt.Println("转换结果为:", str)
}
  1. type de chaîne converti en []type d'octet

Caractère en tranche d'octet, vous peut utiliser []byte() pour lancer.

Exemple de code :

package main

import (
    "fmt"
)

func main() {
    str := "hello world"
    b := []byte(str)
    fmt.Println("转换结果为:", b)
}
  1. []type d'octet converti en type de chaîne

tranche d'octets en caractère, vous peut utiliser string() pour lancer.

Exemple de code :

package main

import (
    "fmt"
)

func main() {
    b := []byte{104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100}
    str := string(b)
    fmt.Println("转换结果为:", str)
}
  1. int64 conversion de type en type int

Si la valeur de int64 est dans le plage de représentation int À l'intérieur, vous pouvez utiliser int() pour lancer. Si cela dépasse la portée, une assertion de type est requise.

Exemple de code :

package main

import (
    "fmt"
)

func main() {
    var i64 int64 = 1234567890
    var i int
    if i64 > int64(i) {
        fmt.Println("超过int类型取值范围")
    } else {
        i = int(i64)
        fmt.Println("转换结果为:", i)
    }
}

Remarque : lors de la conversion de type, assurez-vous de faire attention à la correspondance de la plage de types de données, sinon une troncature ou un débordement des données pourrait se produire.

2. Conversion de type de données personnalisée

Pour les types de données personnalisés, nous pouvons implémenter la conversion de chaîne en surchargeant la méthode String du type. Dans le même temps, nous pouvons également implémenter la conversion au format JSON en surchargeant les méthodes MarshalJSON et UnmarshalJSON du type.

Exemple de code :

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func (p Person) String() string {
    return fmt.Sprintf("Name=%s, Age=%d", p.Name, p.Age)
}

func (p *Person) UnmarshalJSON(b []byte) error {
    type tmp Person
    t := &tmp{}
    err := json.Unmarshal(b, t)
    if err != nil {
        return err
    }
    p.Name = t.Name
    p.Age = t.Age
    return nil
}

func (p Person) MarshalJSON() ([]byte, error) {
    type tmp Person
    t := tmp(p)
    return json.Marshal(t)
}

func main() {
    p1 := &Person{"Tom", 18}

    // 转换为字符串
    str := p1.String()
    fmt.Println("转换结果为:", str)

    // 转换为JSON格式
    json1, _ := json.Marshal(p1)
    fmt.Println("转换结果为:", string(json1))

    // 从JSON格式转换回来
    str2 := `{"name":"Jerry","age":20}`
    var p2 Person
    json.Unmarshal([]byte(str2), &p2)
    fmt.Println("转换结果为:", p2)
}

Grâce au code ci-dessus, nous pouvons voir que la conversion des types personnalisés nous oblige à implémenter manuellement la fonction de conversion afin qu'elle puisse être utilisée normalement.

3. Résumé

Cet article résume les méthodes de conversion des types de données de base et des types de données personnalisés dans Golang, et présente également quelques précautions. Dans les applications pratiques, nous devons choisir de manière flexible différentes méthodes de conversion en fonction de besoins spécifiques afin de mieux traiter les données.

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:
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
Article précédent:fichier golang à hacherArticle suivant:fichier golang à hacher