python语言转换为go_Go语言类型转换

本文介绍Go语言中的类型转换方法,包括基本数据类型之间的转换、字符串与数字的互转等,并提供多个实例展示如何进行类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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() {varx int32

x= 100bytesBuffer := 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{111, 108, 100, 98, 111, 121}

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 intx= 100result :=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() {vari int64

i= 0x100result := strconv.FormatInt(i, 10)

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:指定浮点类型(32:float32、64: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.12345678901234567890123456789result := strconv.FormatFloat(f, 'e', 30, 32)

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 = 100result :=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)varresult 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 = 100result :=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 = 100result :=float32(x)

fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))

}

字符串转浮点数

strconv.ParseFloat(str,bitSize)

str:要转换的字符串

bitSize:指定浮点类型(32:float32、64:float64)

如果 str 是合法的格式,而且接近一个浮点值,

则返回浮点数的四舍五入值(依据 IEEE754 的四舍五入标准)

如果 str 不是合法的格式,则返回“语法错误”

如果转换结果超出 bitSize 范围,则返回“超出范围”

package main

import ("fmt"

"reflect"

"strconv")

func main() {var str string = "0.12345678901234567890"result, _ := strconv.ParseFloat(str, 32)

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 := 100

ifa {

}

}

编译错误:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值