• golang数据类型与转换


    一、数值型int(默认值 0)

    int 整数 32位系统占4个字节(-2^31~2^31-1)、64位系统占8个字节(-2^63~2^63-1)
    uint 32位系统占4个字节(0~2^32-1)、64位系统占8个字节(0-2^64-1)
    rune 范围(-2^31~2^31-1) 等价int32,表示一个Unicode码
    byte 范围(0~255),当要存储字符时选用byte

    1、int的有符号类型

    int8 有符号 8 位整型 (-128 到 127)
    int16 有符号 16 位整型 (-32768 到 32767)
    int32 有符号 32 位整型 (-2147483648 到 2147483647)
    int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

    2、int的无符号类型

    uint8 无符号 8 位整型 (0 到 255)
    uint16 无符号 16 位整型 (0 到 65535)
    uint32 无符号 32 位整型 (0 到 4294967295)
    uint64 无符号 64 位整型 (0 到 18446744073709551615)

    二、浮点型float(默认值 0)

    1、float32 占用4个字节(单精度) 范围(-3.403E38~3.403E38)
    2、float64 占用8个字节(双精度) 范围 (-1798E308~1.798E308) float64精度高于float32

    三、字符型(默认值 "")

    字符型存储与读取方式
    存储:字符->对应码值->二进制->存储
    读取:二进制->码值->字符->读取

    如:

    var x byte = 'a'
    var y int = '够'  //utf-8编码Unicode编码10进制结果
    fmt.Println(x,y)
    结果:
    97 22815
    赋值字符和int的运算
    var x = 10 + 'a'
    fmt.Println(x)
    结果:
    107
    

      

    四、布尔值bool(占用一个字节)(默认值 false)

    golang不可以用0或非0来替代false和true

    1、true 真
    2、false 假

    五、字符串string(默认值 "")

    在go中字符串一旦赋值,字符串就不可变
    "" 双引号扩起来的字符串能识别转义符号
    `` 反引号不识别转义符号,把字符串原生形式输出
    字符串拼接方式

    如:

    var x  =  "hello" + "world"
    多个换行相加
    var y = "hello" + "world" +
    "xxx" +
    "yyy"
    

      

    六、指针

    指针就是一个指针变量指向了一个值的内存地址。

    获取变量地址使用&
    如:
    var i int = 10
    &i /为i变量值的内存地址
    指针例子:

    var a int = 10
    fmt.Println(&a) //获取a变量值存储在内存中的地址
    var ptr *int = &a //ptr是指针变量名,*int代表int类型的指针(如*string为string类型的指针等),ptr的值是a的内存地址
    fmt.Printf("%v
    ", ptr)
    fmt.Printf("ptr指向的值 %v
    ", *ptr) //*ptr就是指向的值
    
    结果:
    0xc00005a058
    0xc00005a058
    ptr指向的值 10
    

      

    七、golang字符类型相互转换

    1、int与float之间转换

    var x int = 10
    var a1 float32 = float32(x)
    fmt.Printf("Type: %T Value: %v
    ", x, x)
    fmt.Printf("Type: %T Value: %v
    ", a1, a1)
    
    结果:
    Type: int Value: 10
    Type: float32 Value: 10
    

      

    2、string与int转换

    方式一、使用fmt.Sprintf 转换

    var x int = 10
    var str string
    str = fmt.Sprintf("%d",x)
    fmt.Printf("Type: %T Value: %v
    ", str, str)
    结果:
    Type: string Value: 10
    

      

    方式二、使用strconv

    package main
    import (
    	"fmt"
    	"strconv"
    	)
    func main(){
            var str string
    	str_b := "false"
    	var b bool
    	var i int = 109
    	var str_s string = "333"
    	var in int64 
    	var f1 float64
    	var str_f string = "231.32124"
    	str = strconv.Itoa(i)  //string
    	b,_ = strconv.ParseBool(str_b) //会返回2个值
    	in,_ = strconv.ParseInt(str_s,10,64) //转成10进制的,0转为int,8代表int8,32,64等
    	f1,_ = strconv.ParseFloat(str_f,64) //转成float64
    	fmt.Printf("%T %v
    ",str,str)
    	fmt.Printf("%T %v
    ",b,b)
    	fmt.Printf("%T %v
    ",in,in)
    	fmt.Printf("%T %v
    ",f1,f1)
    
    }
    
    
    ###结果
    string 109
    bool false
    int64 333
    float64 231.32124
    

      

  • 相关阅读:
    bzoj 4237 稻草人
    bzoj 4537 最小公倍数
    POJ 2763 Housewife Wind(树链剖分)(线段树单点修改)
    HDU 3966 Aragorn's Story(树链剖分)(线段树区间修改)
    spoj 913 Query on a tree II (倍增lca)
    spoj 375 Query on a tree (树链剖分)
    hiho一下第133周 2-SAT·hihoCoder音乐节(2-SAT)(强连通)
    hiho一下第131周 后缀自动机二·重复旋律8(循环相似子串)
    hiho一下第130周 后缀自动机二·重复旋律7
    hiho一下第129周 后缀自动机二·重复旋律6
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/10485719.html
Copyright © 2020-2023  润新知