func intToInt32() {
var intNum int = 123
int32Num := int32(intNum)
fmt.Printf("int32Num type:%T,value: %v\n", int32Num, int32Num)
}
运行结果:
func int32ToUint() {
var int32Num int32 = 456
uintNum := uint(int32Num)
fmt.Printf("uintNum type:%T,value: %v\n", uintNum, uintNum)
}
运行结果:
从上面两个例子可以看出Go
语言类型转换基本格式:type_name(expression)
像数值类型之间的转换都可以这样之间转换。
func intToString() {
var intNum int = 789
str := strconv.Itoa(intNum)
fmt.Printf("str type:%T,value:%v\n", str, str)
// itoa方法的实现源码如下:
formatStr := strconv.FormatInt(int64(intNum), 10)
fmt.Printf("formatStr type:%T,value:%v\n", formatStr, formatStr)
// fmt的方式
fmtstr := fmt.Sprint(intNum)
fmt.Printf("fmtstr type:%T,value:%+v\n", fmtstr, fmtstr)
}
运行结果为:
func stringToInt() {
var str string = "124"
num, _ := strconv.Atoi(str)
fmt.Printf("num type:%T,value:%v\n", num, num)
// atoi方法的实现源码如下:
parseInt, _ := strconv.ParseInt(str, 10, 0)
fmt.Printf("parseInt type:%T,value:%v\n", parseInt, parseInt)
}
运行结果为:
func stringToIntErr() {
var str string = "qwe"
num, _ := strconv.Atoi(str)
fmt.Printf("num type:%T,value:%v\n", num, num)
}
运行结果:
func byteToInt() {
// 字符需要使用单引号包起来
b := []byte{'1', '2', '3'}
bytesBuffer := bytes.NewBuffer(b)
fmt.Printf("bytesBuffer type:%T,value:%v\n", bytesBuffer, bytesBuffer)
str := bytesBuffer.String() // 先转为string
byteNum, _ := strconv.Atoi(str) // 在转为int
fmt.Printf("byteNum type:%T,value:%v\n", byteNum, byteNum)
}
运行结果:
func byteToInt32() {
c := []byte{0, 0, 0, 99}
cBytes := bytes.NewBuffer(c)
var num int32
binary.Read(cBytes, binary.BigEndian, &num)
fmt.Printf("num type:%T,value:%v\n", num, num)
// 0x表示16进制
// 0x03转化二进制为0011,十进制为3,但是在第二节所以表示256*3=768
// 0xe8转化二进制为1110 1000,十进制为232
b := []byte{0x00, 0x00, 0x03, 0xe8}
bBytes := bytes.NewBuffer(b)
binary.Read(bBytes, binary.BigEndian, &num)
fmt.Printf("num type:%T,value:%v\n", num, num)
}
运行结果:
func intToByte() {
var num int32 = 99
bytesBuffer := bytes.NewBuffer([]byte{})
binary.Write(bytesBuffer, binary.BigEndian, num)
byteB := bytesBuffer.Bytes()
fmt.Printf("byteB type:%T,value:%v\n\n", byteB, byteB)
}
运行结果:
func byteToString() {
buf := []byte{'h', 'e', 'l', 'l', 'o'}
buf2 := bytes.NewBuffer(buf).String()
fmt.Printf("buf2 type:%T,value:%v\n", buf2, buf2)
// ascii值:48-57表示0-9,65-90表示A-Z,97-122表示a-z
str := string([]byte{97, 98, 99, 100})
fmt.Printf("str type:%T,value:%v\n\n", str, str)
}
运行结果:
func stringToByte() {
// ascii值:48-57表示0-9,65-90表示A-Z,97-122表示a-z
var str string = "hello"
var bstr []byte = []byte(str)
fmt.Printf("bstr: type:%T,value:%v\n", bstr, bstr)
}
运行结果:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。