美文网首页
golang:基础数据类型

golang:基础数据类型

作者: 唐僧取经 | 来源:发表于2018-09-07 20:03 被阅读0次

    基础数据类型

    整型

    int,uint是根据CPU平台机器字大小决定取值范围。

    &      位运算 AND
    |      位运算 OR
    ^      位运算 XOR
    &^     位清空 (AND NOT)
    <<     左移
    >>     右移
    
    

    默认值

        var a1 int             //0
        var a2 float64         //0
        var a3 bool            //false
        var a4 byte            //0
        var a5 rune            //0
        var a6 []int           //[]
        var a7 []byte          //[]
        var a8 map[int64]int64 //map[]
        var a9 string          //空
        var a10 complex64      //(0+0i)
    

    溢出情况

    一个算术运算的结果,不管是有符号或者是无符号的,如果需要更多的bit位才能正确表示的话,就说明计算结果是溢出了。超出的高位的bit位部分将被丢弃。如果原始的数值是有符号类型,而且最左边的bit位是1的话,那么最终结果可能是负的,例如int8的例子

    var u uint8 = 255
    fmt.Println(u, u+1, u*u) // "255 0 1"
    
    var i int8 = 127
    fmt.Println(i, i+1, i*i) // "127 -128 1"
    
    
    

    类型转换

    对于每种类型T,如果转换允许的话,类型转换操作T(x)将x转换为T类型。许多整数之间的相互转换并不会改变数值;它们只是告诉编译器如何解释这个值。但是对于将一个大尺寸的整数类型转为一个小尺寸的整数类型,或者是将一个浮点数转为整数,可能会改变数值或丢失精度:

    f := 3.645 // a float64
        i := int(f)
        fmt.Println(f, i) // "3.141 3"
        f = 1.99
        fmt.Println(int(f)) // "1"
    
    

    fmt使用技巧

    fmt的两个使用技巧。通常Printf格式化字符串包含多个%参数时将会包含对应相同数量的额外操作数,但是%之后的[1]副词告诉Printf函数再次使用第一个操作数。第二,%后的#副词告诉Printf在用%o、%x或%X输出时生成0、0x或0X前缀。

    ascii := 'a'
    unicode := '国'
    newline := '\n'
    fmt.Printf("%d %[1]c %[1]q\n", ascii)   // "97 a 'a'"
    fmt.Printf("%d %[1]c %[1]q\n", unicode) // "22269 国 '国'"
    fmt.Printf("%d %[1]q\n", newline)       // "10 '\n'"
    
    

    string

    一个字符串是一个不可改变的字节序列。

    s := "hello, world"
        fmt.Println(len(s))     // "12"
        fmt.Println(s[0], s[7]) // "104 119" ('h' and 'w')
        fmt.Println(s[:5])      // "hello"
        fmt.Println(s[7:])      // "world"
        fmt.Println(s[:])       // "hello, world"
    
    
    

    字符串可以用==和<进行比较;比较通过逐个字节比较完成的,因此比较的结果是字符串自然编码的顺序。

    因为字符串是不可修改的,因此尝试修改字符串内部数据的操作也是被禁止的:

    s[0] = 'L' // compile error: cannot assign to s[0]
    
    

    编码方式

    ASCII

    最早时期,ASCII是7bit,只能摆哦事128个字符。无法表示出全世界各个国家的字符,所以有了Unicode

    Unicode

    使用4Byte,32bit,可以表示更多的字符。但是会造成浪费空间,有的字符只需要8bit就够了。于是,有了UTF-8

    UTF-8

    是一个变长编码。
    UTF8编码使用1到4个字节来表示每个Unicode码点,ASCII部分字符只使用1个字节,常用字符部分使用2或3个字节表示。每个符号编码后第一个字节的高端bit位用于表示总共有多少编码个字节。如果第一个字节的高端bit为0,则表示对应7bit的ASCII字符,

    相关文章

      网友评论

          本文标题:golang:基础数据类型

          本文链接:https://www.haomeiwen.com/subject/aikhgftx.html