Golang 数据类型转换

golang数据类型

  • 基本类型:boolean,numeric,string类型的命名实例是预先声明的。
  • 复合类型:array,struct,指针,function,interface,slice,map,channel类型(可以使用type构造)。

数据类型转换表

// []byte -> other type
[]byte => string : string([]byte)
[]byte => int : binary包处理, 查看下面


// int -> other type
int => string : s = strconv.Itoa(i)  
int => int32  : i32 = int32(num)
int => int64 : i64 = int64(num)
int64/int32 => int : i = int(num)
int64 => string : strconv.FormatInt(int64, 10)
int64 => time.Duration : time.Duration(int64)
int32 => byte : bytes.NewBuffer() 看上面 int 和 byte 互转
int => float64 : float64(num) 
// other type -> int
i = int(int32/int64)
float64/float32 => int(int64/int32)


// string -> other type
string => int :  i, err = strconv.Atoi(s)
string => bool : strconv.ParseBool("true")
string => float32 : strconv.ParseFloat(s, 32)
string => float64 : strconv.ParseFloat(s, 64)
string => uint : strconv.ParseUint()
string => int32/int64 : strconv.ParseInt(s, 10, 32/64)
string => []byte : []byte(string)
string(16进制) => int32/int64 : strconv.ParseInt(s, 0, 32/64)

// other type -> string
int,int32,int64 => string : str1 := fmt.Sprintf("%d", i)             // i可以是int/int32/int64
                        或  str2 := strconv.Itoa(i)                  // i为int
                        或  str3 := strconv.FormatInt(int64(i), 10)  // i可以是int/int32/int64
uint64 => string : strconv.FormatUint(unit64, 10) 
bool => string : strconv.FormatBool(true)
float64 => string : strconv.FormatFloat(float64(12), 'f', -1, 64) 
                        或  fmt.Sprintf("%.2f", float64)


// array -> slice : 
1) copy(array[:], slice[0:4])  | 全部 copy(array[:], slice)
2) for
for index, b := range someSlice {
    array[index] = b
}

// slice -> array
slice=>array :    array[:]

其他


//string转int valueInt,err:=strconv.Atoi(string) //int到string str:=strconv.Itoa(valueInt) //string转int64 valueInt64, err := strconv.ParseInt(string, 10, 64)

 断言

data, ok := bodyMap["taskKey"]
if ok {
   dataMap := data.(map[string]interface{})
   innData := dataMap["data"]
   fmt.Println(innData)
}

start := bodyMap["start"].([]interface{})

数据类型说明

1. int类型中哪些支持负数

  • 有符号(负号):int8 int16 int32 int64
  • 无符号(负号):uint8 uint16 uint32 uint64

2. 浮点类型的值有float32和float64(没有 float 类型)

3. byte和rune特殊类型是别名

  • byte就是unit8的别名
  • rune就是int32的别名

4. int和uint取决于操作系统(32位机器上就是32字节,64位机器上就是64字节)

  • uint是32字节或者64字节
  • int和uint是一样的大小

5. 为了避免可移植性问题,除了byte(它是uint8的别名)和rune(它是int32的别名)之外,所有数字类型都是不同的。 在表达式或赋值中混合使用不同的数字类型时,需要转换。例如,int32和int不是相同的类型,即使它们可能在特定架构上具有相同的大小。

 感谢https://www.cnblogs.com/kumata/p/10158475.html

结束!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值