go类型转换及与C的类型转换

本文介绍了Go语言中的类型转换,包括基本类型的转换、类型断言的使用,以及bytes与string之间的转换、interface转换为string的方法。此外,还详细讲解了如何进行Go和C的类型转换,特别是涉及格式字符串的情况。

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

GO类型转换及与C的类型转换

类型转换

语法

dst := float32(src)

示例

var num int = 520
f32 := float32(num)
i64 := int64(num)

注意:加入val是一个指针,int32(val)相当于*(int32(var1)),指针不能直接转换成一个int32类型,应该改为(*int32)(var1),所以某些类型可能引起误会的应该用括号括起来转换。

类型断言

语法

dst,ok := src.(int) // 安全类型断言,通过ok判断是否转换成功
dst := src.(int)   // 非安全类型断言,无法确定是否转换成功

示例

var val interface{
   
   } = 123
num,ok := val.(int)
if ok {
   
   
    fmt.Printf("%T->%d\n", num, num)
} else {
   
   
    fmt.Println("类型不匹配")
}

其他转换

go提供了strconv包来进行转换

bytes 、string转换

//类型转换  string to bytes 
func str2bytes(s string) []byte {
   
    
    x := (*[2]uintptr)(unsafe.Pointer(&s)) 
    h := [3]uintptr{
   
   x[0], x[1], x[1]} 
    return *(*[]byte)(unsafe.Pointer(&h)) 
}
//类型转换  bytes to string 
func bytes2str(b []byte) string {
   
    
    return *(*string)(unsafe.Pointer(&b)) 
}

interfac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值