zoukankan      html  css  js  c++  java
  • 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() 看上面 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[:]

    数据类型说明

    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不是相同的类型,即使它们可能在特定架构上具有相同的大小。


    笔记参考:GO基本数据类型总结



  • 相关阅读:
    每天进步一点点------Allegro 布线完成后如何修改线宽
    每天进步一点点------Allegro 布线时显示延迟以及相对延迟信息
    每天进步一点点------Allegro 修线
    每天进步一点点------Allegro 蛇形走线
    每天进步一点点------Allegro 动态显示走线长度
    每天进步一点点------Allegro 群组布线
    每天进步一点点------Allegro 手工布线时控制面板各选项说明
    每天进步一点点------Allegro 铺铜、内电层分割
    每天进步一点点------Allegro 铺铜详解
    每天进步一点点------Allegro使用脚本记录文件设置工作环境的颜色
  • 原文地址:https://www.cnblogs.com/kumata/p/10158475.html
Copyright © 2011-2022 走看看