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

Go语言中string,int,int64,以及string,struct、数组,map互相转换

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))
	// int到string
	s1 := strconv.Itoa(11)
	n_10_64 := int64(11)
	fmt.Println(reflect.TypeOf(s1))
	fmt.Println(reflect.TypeOf(n_10_64))
	// int64到string
	s3 := strconv.FormatInt(11,10)
	n_64_10 := int(n_10_64)
	fmt.Println(reflect.TypeOf(s3))
	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]

	// 将结构体解析为字符串
	b, e := json.Marshal(user)
	fmt.Println(e)
	fmt.Println(string(b)) // {"id":1,"name":"wxnacy"}

	b, e = json.Marshal(a)
	fmt.Println(string(b), e) // [1,2,3,4] <nil>

	b, e = json.Marshal(d)
	fmt.Println(string(b), e) // {"id":1,"name":"wxnacy"} <nil>
}

  

猜你喜欢

转载自www.cnblogs.com/zhangyafei/p/11940857.html