类型转换用于将一种数据类型的变量转换为另外一种类型的变量。

Go语言类型转换基本格式如下:
表达式 T(v) 将值 v 转换为类型 T 。

Go语言各种类型转换及函数的高级用法:
strconv包实现了基本数据类型和其字符串表示的相互转换。

转字节

reflect.TypeOf() 查看类型

字符串转字节

package main

import (
"fmt"
"reflect"
) func main() {
var str string = "oldboy"
result := []byte(str)
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

32位整形转字节

package main

import (
"bytes"
"encoding/binary"
"fmt"
"reflect"
)
// reflect.TypeOf() 查看类型 func main() {
var x int32
x =
bytesBuffer := bytes.NewBuffer([]byte{})
binary.Write(bytesBuffer, binary.BigEndian, x)
result := bytesBuffer.Bytes()
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

转字符串

字节转字符串

package main

import (
"fmt"
"reflect"
) func main() {
var b []byte = []byte{, , , , , }
result := string(b)
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

整形转字符串

strconv.Itoa(x)

package main

import (
"fmt"
"reflect"
"strconv"
) func main() {
var x int
x =
result := strconv.Itoa(x)
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

FormatInt 将 int 型整数 i 转换为字符串形式 
base:进位制(2 进制到 36 进制) 大于 10 进制的数,返回值使用小写字母 ‘a’ 到 ‘z’

func FormatInt(i int64, base int) string

Itoa 相当于 FormatInt(i, 10)

64位整形转字符串

package main

import (
"fmt"
"reflect"
"strconv"
) func main() {
var i int64
i = 0x100
result := strconv.FormatInt(i, )
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

布尔值转字符串

package main

import (
"fmt"
"reflect"
"strconv"
) func main() {
t := strconv.FormatBool(true)
f := strconv.FormatBool(false)
fmt.Printf("t is %v , t type is %v\n", t, reflect.TypeOf(t))
fmt.Printf("f is %v , f type is %v\n", f, reflect.TypeOf(f))
}

浮点数转字符串

strconv.FormatFloat(f,fmt,prec,bitSize)
f:要转换的浮点数
fmt:格式标记(b、e、E、,f、g、G)
prec:精度(数字部分的长度,不包括指数部分)
bitSize:指定浮点类型(:float32、:float64) 格式标记:
‘b’ (-ddddp±ddd,二进制指数)
‘e’ (-d.dddde±dd,十进制指数)
‘E’ (-d.ddddE±dd,十进制指数)
‘f’ (-ddd.dddd,没有指数)
‘g’ (‘e’:大指数,’f’:其它情况)
‘G’ (‘E’:大指数,’f’:其它情况)
package main import (
"fmt"
"reflect"
"strconv"
) func main() {
f := 100.12345678901234567890123456789
result := strconv.FormatFloat(f, 'e', , )
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

转整形

int转int64

package main

import (
"fmt"
"reflect"
) func main() {
var x int =
result := int64(x)
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

字节转32位整形

package main

import (
"bytes"
"encoding/binary"
"fmt"
"reflect"
) func main() {
b := []byte{0x00, 0x00, 0x03, 0xe8}
bytesBuffer := bytes.NewBuffer(b) var result int32
binary.Read(bytesBuffer, binary.BigEndian, &result)
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

转浮点型

float32转float64

package main

import (
"fmt"
"reflect"
) func main() {
var x float32 =
result := float64(x)
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

整型转浮点型

package main

import (
"fmt"
"reflect"
) func main() {
var x int =
result := float32(x)
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

字符串转浮点数

strconv.ParseFloat(str,bitSize)
str:要转换的字符串
bitSize:指定浮点类型(:float32、:float64)
如果 str 是合法的格式,而且接近一个浮点值,
则返回浮点数的四舍五入值(依据 IEEE754 的四舍五入标准)
如果 str 不是合法的格式,则返回“语法错误”
如果转换结果超出 bitSize 范围,则返回“超出范围”
package main import (
"fmt"
"reflect"
"strconv"
) func main() {
var str string = "0.12345678901234567890"
result, _ := strconv.ParseFloat(str, )
fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

转布尔值

字符串转布尔值

ParseBool 将字符串转换为布尔值 
它接受真值:1, t, T, TRUE, true, True 
它接受假值:0, f, F, FALSE, false, False. 
其它任何值都返回一个错误
package main

import (
    "fmt"
    "reflect"
    "strconv"
) func main() {
    result, _ := strconv.ParseBool("1")
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

注意:Go语言不能将其他类型当 bool 值使用

package main

func main() {
a :=
if a {
}
}

编译错误:

./main.go::: non-bool a (type int) used as if condition

最新文章

  1. c语言问卷
  2. Python之路【第九篇】堡垒机基础&数据库操作
  3. Zero Copy 简介
  4. iOS开发拓展篇—音乐的播放
  5. winscp私钥如何生成
  6. Sql Server 2012 的新分页方法分析(offset and fetch) - 转载
  7. asynchronous vs non-blocking
  8. Python字典 (dictionary)
  9. mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler
  10. **bootstrap常见常用样式总结
  11. 2016计蒜之道复赛 菜鸟物流的运输网络 网络流EK
  12. codeforces 468B 2-sat
  13. HTML5初学者福利!11个在线学习网站推荐
  14. 「Poetize3」绿豆蛙的归宿
  15. .h .m切换
  16. BBS论坛(五)
  17. 【DevExpress】邮箱制作小结
  18. js数据放入缓存,需要再调用
  19. Spring Boot IoC 容器初始化过程
  20. 洛谷P4168 蒲公英 [Violet] 分块

热门文章

  1. Java程序设计17——多线程-Part-A
  2. python的return
  3. Gym 101201G Maximum Islands (最大独立集)
  4. loadrunner - 安装与破解
  5. Linux 基础教程 40-df和du命令
  6. android事件分发
  7. Activity ViewPager Fragment框架的生命周期
  8. Reverting back to the R12.1.1 and R12.1.3 Homepage Layout
  9. ffmpeg学习(一)——在window7下编译ffmpeg
  10. 3:C#异步WaitAll的使用