Go--类型转换

1 int与string

备注:string不可直接转int32,先转为int,再转成int32

package main

import (
    "fmt"
    "strconv"
)

func main() {
    //int 转 string
    var a int = 3
    str := strconv.Itoa(a)
    fmt.Printf("str:类型:%T 值:%s\n", str, str)
    var aa string = "2"
    aaa, _ := strconv.Atoi(aa)
    fmt.Printf("aaa:类型:%T 值:%d\n", aaa, aaa)

    //int32 转 string
    var b int32 = 3
    str32 := fmt.Sprint(b)
    fmt.Printf("str32:类型:%T 值:%s\n", str32, str32)
    var bb string = "2"
    bbb, _ := strconv.Atoi(bb)
    bbbb := int32(bbb)
    fmt.Printf("bbbb:类型:%T 值:%d\n", bbbb, bbbb)

    //int64转string
    var c int64 = 3
    str64 := strconv.FormatInt(c, 10)  //10进制
    fmt.Printf("str64:类型:%T 值:%s\n", str64, str64)
    var cc string = "2"
    ccc, _ := strconv.ParseInt(cc, 10, 64)
    fmt.Printf("ccc:类型:%T 值:%d\n", ccc, ccc)

}

 

2 float与string

备注:string不可直接转float32,先转成float64,再转成float32

package main

import (
    "fmt"
    "strconv"
)

func main() {
    //float32转string
    var d float32 = 0.998
    flo32 := fmt.Sprintf("%f", d)
    fmt.Printf("flo32:类型:%T 值:%s\n", flo32, flo32)
    var dd string = "0.998"
    ddd, _ := strconv.ParseFloat(dd, 32)
    dddd := float32(ddd)
    fmt.Printf("dddd:类型:%T 值:%f\n", dddd, dddd)

    //float64转string
    var e float64 = 0.998
    flo64 := strconv.FormatFloat(e, 'f', -1, 32)
    fmt.Printf("flo64:类型:%T 值:%s\n", flo64, flo64)
    var ee string = "0.998"
    eee, _ := strconv.ParseFloat(ee, 64)
    fmt.Printf("ddd:类型:%T 值:%f\n", eee, eee)
}

 

3 结构体与JSON序列化

package main

import (
    "encoding/json"
    "fmt"
)

type test struct {
    Name string
    Age  int
}

func main() {
    c := &test{
        Name: "tom",
        Age:  12,
    }
    //JSON序列化:结构体-->JSON格式的字符串
    data, err := json.Marshal(c)
    if err != nil {
        fmt.Println("json marshal failed")
        return
    }
    fmt.Printf("json:%s\n", data)

    //JSON反序列化:JSON格式的字符串-->结构体
    str := `{"name":"jer","id":0,"sex":"man"}`
    type test2 struct {
        Name string
        Id   int
        Sex  string
    }
    c1 := &test2{}
    err = json.Unmarshal([]byte(str), c1)
    if err != nil {
        fmt.Println("json unmarshal failed!")
        return
    }
    fmt.Printf("%#v\n", c1)
}

输出:

json:{"Name":"tom","Age":12}
&main.test2{Name:"jer", Id:0, Sex:"man"}

 

4 map与string

map转string

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    //创建map
    s2 := make(map[string]int)
    ...
    s3, _ := json.Marshal(s2)
    str := string(s3)
    fmt.Println(str)
}

 

posted @ 2022-11-15 10:49  心恩惠动  阅读(43)  评论(0编辑  收藏  举报