• Go语言基础之数据类型转换


    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() 看上面 intbyte 互转
    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)

    headerParam := make(map[string][]string)
    json.Unmarshal([]byte(taskmapx["headers"].(string)), &headerParam)

     断言

    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

    结束!

  • 相关阅读:
    发现CSDN的一个小Bug,CSDN网站管理人员进来看看哈~~
    “凡客好声音”摇滚派对专场 正火热抢票中!
    帧动画
    java WEB Response重定向和缓存控制
    上一篇括号配对让人联想起catalan数,顺便转载一篇归纳的还不错的文章
    字符串循环移位
    应用层协议实现系列(三)——FTPserver之设计与实现
    HDU1575-Tr A(矩阵高速幂)
    音视频即时通讯的分包与重组
    怎样批量重命名照片,可是去掉那个烦人的括号
  • 原文地址:https://www.cnblogs.com/aaronthon/p/14708851.html
Copyright © 2020-2023  润新知