@
1. int和float转换
1.1 int ==> float32/64
| vFloat32 := float32(vInt) |
| vFloat64 := float64(vInt) |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| var AAA int = 17 |
| var BBB int = 5 |
| var CCC float32 |
| |
| CCC = float32(AAA)/float32(BBB) |
| fmt.Printf("CCC 的值为: %f\n",CCC) |
| } |
说明:定义int型的 AAA /BBB ,float32型的 CCC。
CCC 计算时 给AAA和BBB转换类型为float32。
输出:
1.2 float64/32 ==> int
| vInt := int(vFloat64) |
| vInt := int(vFloat32) |
2. 字串和数字的转换(strconv)
2.1 string ==>int
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| "strconv" |
| ) |
| |
| |
| func main() { |
| var stringA string |
| intA,_:=strconv.Atoi(stringA) |
| fmt.Println("intA 的数据类型是:",reflect.TypeOf(intA)) |
| } |
输出:
2.2 string ==>int64
字串的值按十进制算,转换为int类型
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| "strconv" |
| ) |
| |
| |
| func main() { |
| var stringA = "12" |
| intA,_ := strconv.ParseInt(stringA, 10, 64) |
| fmt.Println("intA 的数据类型是:",reflect.TypeOf(intA),"值为:",intA) |
| } |
输出
| intA 的数据类型是: int64 值为: 12 |
说明:
strconv.ParseInt()
中第二个参数是字串值按多少进制算。
如示例中10 ,只得是字串按10进制计。
如果字串的值是16进制算,转换为int格式
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| "strconv" |
| ) |
| |
| |
| func main() { |
| var stringA = "12" |
| intA,_ := strconv.ParseInt(stringA, 16, 64) |
| fmt.Println("intA 的数据类型是:",reflect.TypeOf(intA),"值为:",intA) |
| } |
2.3 string ==> float64
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| "strconv" |
| ) |
| |
| |
| func main() { |
| var stringA = "12" |
| float64A,_ := strconv.ParseFloat(stringA,32) |
| fmt.Println("float64A 的数据类型是:",reflect.TypeOf(float64A),"值为:",float64A) |
| } |
输出
| float64A 的数据类型是: float64 值为: 12 |
2.4 int ==> string
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| "strconv" |
| ) |
| |
| |
| func main() { |
| var intA = 12 |
| stringA := strconv.Itoa(intA) |
| fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA) |
| } |
输出
| stringA 的数据类型是: string 值为: 12 |
2.5 int64 ==> string
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| "strconv" |
| ) |
| |
| |
| func main() { |
| var int64A int64 = 12.0000000 |
| stringA := strconv.FormatInt(int64A, 10) |
| fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA) |
| } |
输出
| stringA 的数据类型是: string 值为: 12 |
说明:
strconv.FormatInt
第二个参数是转换后的字串是x进制显示,如二进制显示:
| func main() { |
| var int64A int64 = 12.0000000 |
| stringA := strconv.FormatInt(int64A, 2) |
| fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA) |
| } |
输出为:
| stringA 的数据类型是: string 值为: 1100 |
2.6 float64 ==> string
| package main |
| |
| import ( |
| "fmt" |
| "reflect" |
| "strconv" |
| ) |
| |
| func main() { |
| var float64A float64 = 0.123456789 |
| stringA := strconv.FormatFloat(float64A, 'f', 5, 64) |
| fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA) |
| } |
说明:
strconv.FormatFloat()
的
第二个参数:表示计数形似,f
表示不按指数形式计。
第三个参数:表示小数点后保留几位,-1 表示按原来位数
输出
| stringA 的数据类型是: string 值为: 0.12346 |
3 interface转换
3.1 interface ==> float64
- 下例中,
userId
是从session中取到的用户Id,类型是interface。
| val,ok:= userId.(float64) |
| if ok { |
| …… |
| } |
完整代码如下:
| if identity, ok := c.Get("identity"); ok { |
| if identityMap, ok := identity.(map[string]interface{}); ok { |
| fmt.Printf("identityMap: %+v\n", identityMap) |
| if userId, ok := identityMap["UserId"]; ok { |
| val,ok:= userId.(float64) |
| if ok { |
| userIdInt = int(val) |
| } |
| fmt.Println("里边 userIdInt :",userIdInt) |
| }else { |
| fmt.Printf("No UserId\n") |
| } |
| }else { |
| fmt.Printf("Not a map: %+v\n", identityMap) |
| } |
| |
| }else { |
| fmt.Println("identify not found") |
| } |
4. []byte 和 string
4.1 []byte ===> string
4.2 string ===> []byte
| var ASliceByte = []byte(Astring) |

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析