缘起
在搞网站的时候,忘了类型怎么转换,主要是好久不用真的会忘,特此记录
种类
其实类型转换在我看来主要就分为三种,分别是 字符串与数字,数字与数字,对象与对象
示例
package model
import (
"fmt"
"strconv"
"testing"
)
type Student struct {
Name string
}
type School struct {
Name string
}
func BenchmarkOk(b *testing.B) {
var str = "1"
var number int = 2
fmt.Println("原字符串:",str)
fmt.Println("原数字:",number)
//字符串转数字
num,_ := strconv.Atoi(str)
fmt.Println("字符串转数字:",num)
//数字转字符串
str1 := strconv.Itoa(num)
fmt.Println("数字转字符串:",str1)
//数字转数字
var numTrans = int64(number)
fmt.Println("数字转数字:",numTrans)
var student = Student{Name:str1}
var inter interface{} = student
//转换方式1
trans1 := School(student)
//转换方式2
trans2,_ := inter.(Student)
fmt.Println("转换方式1:",trans1)
fmt.Println("转换方式2:",trans2)
}
输出结果:
原字符串: 1
原数字: 2
字符串转数字: 1
数字转字符串: 1
数字转数字: 2
转换方式1: {1}
转换方式2: {1}
补充
补充三点,三个相互转换
1 json、map、struct
//map转换string
var userBase User
var u = map[string]interface{}{}
if err := mapstructure.Decode(u, &userBase);err != nil{
fmt.Errorf(err.Error()+"\r\n")
}
//map转json
b,_ := json.Marshal(u)
//json转对象
json.Unmarshal(b,&userBase)
fmt.Println(userBase)
未完待续