Go语言中各种数据格式转换

Go语言各种数据类型格式转换

package main

import (
        "encoding/json"
        "fmt"
        "reflect"
        "strconv"
)

type User struct {
        Id   int    `json:"id"`
        Name string `json:"name"`
}

func main() {
        //string到int
        n10, _ := strconv.Atoi("12")
        fmt.Println(reflect.TypeOf(n10))
        // string到int64
        n64, _ := strconv.ParseInt("12", 10, 64)
        fmt.Println(reflect.TypeOf(n64))
        // string to float32、float64
        f_32, _ := strconv.ParseFloat("3.1415", 32)
        f_64, _ := strconv.ParseFloat("3.1415", 64)
        fmt.Printf("%T\n", f_32)  // float64
        fmt.Printf("%T\n", f_64)

        // int到string
        s1 := strconv.Itoa(11)
        fmt.Println(reflect.TypeOf(s1))
        // int64到string
        s2 := strconv.FormatInt(11,10)
        fmt.Println(reflect.TypeOf(s2))
        // float32/64 to string
        s3 := strconv.FormatFloat(3.1415, 'E', -1, 32)
        s4 := strconv.FormatFloat(3.1415, 'E', -1, 64)
        fmt.Println(reflect.TypeOf(s3))
        fmt.Println(reflect.TypeOf(s4))

        // int和int64
        n_10_64 := int64(11)
        fmt.Println(reflect.TypeOf(n_10_64))
        // int64 to int
        n_64_10 := int(n_10_64)
        fmt.Println(reflect.TypeOf(n_64_10))

        s := `{"id": 1, "name": "wxnacy"}`

        // 将字符串反解析为结构体
        var user User
        _ = json.Unmarshal([]byte(s), &user)
        fmt.Println(user) // {1 wxnacy}

        // 将字符串反解析为字典
        var d map[string]interface{}
        _ = json.Unmarshal([]byte(s), &d)
        fmt.Println(d) // map[id:1 name:wxnacy]

        // 将字符串反解析为数组
        s = `[1, 2, 3, 4]`
        var a []int
        _ = json.Unmarshal([]byte(s), &a)
        fmt.Println(a) // [1 2 3 4]

        // 将结构体解析为字符串
        str_user, _ := json.Marshal(user)
        fmt.Println(string(str_user))// {"id":1,"name":"wxnacy"}
        // 数组解析为字符串
        str_a, _ := json.Marshal(a)
        fmt.Println(string(str_a)) // [1,2,3,4] <nil>
        // map解析为字符串
        str_d, _ := json.Marshal(d)
        fmt.Println(string(str_d)) // {"id":1,"name":"wxnacy"} <nil>
}