golang的类型转换

// []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() 看上面 intbyte 互转
//整形转换成字节
func IntToBytes(n int) []byte {
  x := int32(n)
  bytesBuffer := bytes.NewBuffer([]byte{})
  binary.Write(bytesBuffer, binary.BigEndian, x)
  return bytesBuffer.Bytes()
}
//字节转换成整形
func BytesToInt(b []byte) int {
  bytesBuffer := bytes.NewBuffer(b)
  
  var x int32
  binary.Read(bytesBuffer, binary.BigEndian, &x)
  
  return int(x)
}


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[:]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值