zoukankan      html  css  js  c++  java
  • Go基本数据类型与运算符

    基本数据类型

    布尔类型: bool

    ​ 取值:true , false

    ​ 打印占位符:%t

    数值类型

    1. 整数:

      1. int8 有符号8位(-128 到 127)

      2. int16 有符号16位(-32768 到 32767)

      3. int32 有符号32位(-21474833648 到 21474833647)

      4. int64 有符号64位(-9223372036854775808 到 9223372036854775807)

      5. uint8 无符号8位(0到255)

      6. uint16 无符号16位(0到65535)

      7. uint32 无符号32位(0到4294967295)

      8. uint64 无符号64位(0到18446744073709551615)

        • golang没有short,long表示方式,直接用类型+长度表示

        • 符号:最高位表示符号位,0正数,1负数,其余位表示数值

        • 无符号:所有位表示数值

        • 实际使用时通常使用int或unit,int和uint根据底层平台,自动识别位数,32位系统为int32和uint32,64位系统为int64和uint64。

        • 作为强类型语言,如果是64位系统,int与int64不是同一种类型,也不能相互赋值

        • 隐式类型的数值变量类型推导为int

        var i3 = 9223372036854775807
        //类型推导i3是int类型
        
      9. byte

        uint8的别称

      10. rune

        int32的别称

    2. 浮点:小数

      1. float32

        单精度

      2. float64

        双精度

        打印占位符:%f ,默认打印小数点后6位,约束位数则表示为%.2f

        不使用占位符,直接打印,则会打印原始的数值位数,即字面量的位数

    3. 字符串:string

      1. 概念:

        多个byte的集合,理解为一个字符序列

      2. 语法:

        用双引号表示,也可以用``(波浪号)表示

      3. 占位符:

        1. %s
        2. %q 打印时带" "
    4. 字符

      1. 概念:

        用int32表示类型

      2. 语法:

        用单引号表示

      3. 占位符:

        1. %c
        2. %q 打印时带' '
      4. 编码

        编码格式 描述
        asc2 美国最初制定的字母对应的编码表
        gbk 在asc2的基础上增加了中文对应的编码;其他国家也有类似的自己语言的编码表
        unicode 1.国家标准化组织将各国语言的字符编码统一到了一张编码表,号称包括了全世界的语言 2.unicode只是统一了各国语言各个字符的数值编码,但没有规定如何存储这些数值 3.unicode不兼容gbk表,unicode对中文编码进行了重新排列,所以unicode的中文对应编码与gbk的完全不同 4.unicode与asc2是兼容的,所以英文字符的数值编码没有任何变化
        unicode存储方式 描述
        utf8
        utf16
        utf32
      5. 转义字符

        1. 有一些字符有特殊作用,可以转义为普通字符
        2. 有一些是普通字符,转义后具有了特殊作用
        3. 表示的字符串中""作为普通字符,在""表示的字符串中 作为普通字符

    复合数据类型

    1. array

    2. slice

    3. map

    4. function

    5. pointer

    6. struct

    7. interface

    8. channel

    数据类型转换

    1. 语法格式

      Type(Value)

      浮点型向数值型转换时,只取整数部分

      布尔型无法转换为其他类型

    2. 常量

      1. 在需要时会隐式自动转型,不需要显式的转换

      2. 高精度类型常量/字面常量无法用Type(Value)转换为低精度类型(浮点->整型,但同型的可以,如float64->float32)

        const i7 = 3.6565
        int(i7) //报错
        
      3. 高精度类型常量/字面常量无法直接(即隐式方式)赋值给低精度类型变量(浮点->整型,同型都不可以)

        const i7 = 3.6565
        var i2 int = i7 //报错
        
      4. 常量隐式类型转换,需要新的类型空间足够大才行

      5. 常量字面量本身的精度是非常高的,一旦将常量赋值给变量或const,就会降低精度

      6. 在表达式中,常量/字面常量默认会向表达式中的变量类型转换,注意不支持向低精度转换

        const i7 = 3.6565
        var i2 float64
        i7+i2  //常量i7向float64转换,如果i2是int型就会报错
        
    3. 变量

      1. go是静态强类型语言,定义,赋值,运算时必须类型一只,所以变量类型必须一致

    运算符

    1. 算数运算符

      + - * /取商 %取余 ++ -- 
      ++ -- 没有返回值,也就是一个语句
      ++ -- 不支持前置使用,也就是++c --c是不合法的
      

      语句指的是执行单元,通常以行为单位,

      表达式指的是可用于计算的式子,即可能产生一个值的式子。

      语句可以包含有表达式,表达式也可以单独形成一个语句

      %% 打印时转义%的作用,使其只输出字符%

    2. 关系运算符

      > < >= <= != == 
      
      1. 结果是布尔类型
    3. 逻辑运算符

      &&短路与  ||短路或 ! (其它语言 &与 |或 两种操作需要表达式各部分必须都运算一遍)
      
    4. 位运算符

      & | ^异或 &^位清空 ~取反
      
      1. 将数值转为二进制,按位操作

      2. 异或

        1. 两元操作时 位置上相同为0,不同为1

          重点再异上,所以不同为1

        2. 一元操作时 就是按位取反

      3. 位清空

        a&^b 对于b上的每一位数值,如果为0就取对应位上a的数值,如果为1结果位就取0

      4. 位移运算符

        1. << 按位左移

          a << b 将a转为二进制,向左移动b位,也就是放大2的b次方

        2. >> 按位右移
          
          

          a >> b b 将a转为二进制,向右移动b位

    5. 赋值运算符

      = += -= *= /= %= <<= >>= &= |= ^=
      
      
    6. 运算符的优先级

      1. 二元运算符均是从左至右
      2. 最好通过括号提升可读性
      优先级 运算符
      7 ~ ! ++ -- 一元运算符
      6 * / % << >> & &^
      5 + - ^
      4 == != < <= >= >
      3 <- 通道操作
      2 &&
      1 ||
  • 相关阅读:
    R语言 主成分分析
    主成分分析(PCA)及其在R里的实现
    UML类图几种关系的总结
    微信Android客户端架构演进之路
    Android单元测试实践
    Android studio 快捷键(Mac)
    Android 启动模式及常用的Intent的Flag
    linux常用命令 (mac ),积少成多
    Android Studio IDE 简单学习和介绍
    轻量级分布式 RPC 框架
  • 原文地址:https://www.cnblogs.com/henryno12/p/12330197.html
Copyright © 2011-2022 走看看