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
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) } }
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) }
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) }
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) }
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!