当前位置: 代码迷 >> 综合 >> Go - Task2 - 数据类型,关键字,标识符
  详细解决方案

Go - Task2 - 数据类型,关键字,标识符

热度:70   发布时间:2023-12-28 00:34:39.0

Task2 - 数据类型,关键字,标识符

数据类型

基础数据类型

布尔

var b1 bool = true
var b2 bool = false
fmt.Println("b1 =",  b1, "b2 =", b2)

运算

  • &&
  • ||

&& 的优先级大于 ||

整型

  • int8, int16, int32, int64 -> 8,16,32,64bit有符号整数

  • uint8, uint16, uint32, uint64 -> 8, 16, 32, 64 无符号整数

  • int/uint -> 不同平台/编译器可能产生不同大小(32/64)

  • uintptr(无符号整型, 存放一个指针)

Go语言中关于算术运算、逻辑运算和比较运算的二元运算符,它们按照优先级递减的顺序排列:

*      /      %      <<       >>     &       &^
+      -      |      ^
==     !=     <      <=       >      >=
&&
||
  • 同一个优先级左优先结合, 括号明确优先顺序
  • 前两行还有 += 这种操作

Go语言还提供了以下的bit位操作运算符,前面4个操作运算符并不区分是有符号还是无符号数:

&      位运算 AND
|      位运算 OR
^      位运算 XOR
&^     位清空(AND NOT)
<<     左移
>>     右移
  1. 表示 Unicode 字符的 rune 类型和 int32 类型是等价的,通常用于表示一个 Unicode 码点,是等价的。
  2. byte 和 uint8 也是等价类型,byte 类型一般用于强调数值是一个原始的数据而不是一个小的整数。
  3. 无符号的整数类型 uintptr,它没有指定具体的 bit 大小但是足以容纳指针。只有在底层编程时才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。
  4. 有符号整数采用 2 的补码形式表示,也就是最高 bit 位用来表示符号位,一个 n-bit 的有符号数的取值范围是从 -2(n-1) 到 2(n-1)-1。无符号整数的所有 bit 位都用于表示非负数,取值范围是 0 到 2n-1。

浮点

  • float32, float64
  1. 常量 math.MaxFloat32 表示 float32 能取到的最大数值,大约是 3.4e38。
  2. 常量 math.MaxFloat64 表示 float64 能取到的最大数值,大约是 1.8e308。
  3. float32 和 float64 能表示的最小值分别为 1.4e-45 和 4.9e-324。
  4. 浮点数在声明的时候可以只写整数部分或者小数部分。

复数

  • complex64, complex128 -> 分别对应float32, float64

  • 前半部分是实数, 后半部分是虚数

  • 如果一个浮点数面值或一个十进制整数面值后面跟着一个i,例如3.141592i或2i,它将构成一个复数的虚部,复数的实部是0

  • 复数也可以用==和!=进行相等比较。只有两个复数的实部和虚部都相等的时候它们才是相等的(译注:浮点数的相等比较是危险的,需要特别小心处理精度问题)。 -> 那就是eps呗

字符串

  • 一个字符串是一个不可改变的字节序列。(不能s[i] = "i"赋值)
  • Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本
  • 故, 第i个字节并不一定是字符串的第i个字符,因为对于非ASCII字符的UTF8编码会要两个或多个字节。

派生类型

  • 指针类型(Pointer)
  • 数组类型
  • 结构化类型(struct)
  • Channel 类型
  • 函数类型
  • 切片类型
  • 接口类型(interface)
  • Map 类型

关键字

  • 语言设计者保留的有特定于法含义的标识符
  • 有自己的用途和语法含义
  • 一般用来控制程序结构

关键字 / 保留字

break      default       func     interface   select
case       defer         go       map         struct
chan       else          goto     package     switch
const      fallthrough   if       range       type
continue   for           import   return      var
  1. 引导程序结构的8个关键词
    1. package -> 定义包
    2. import -> 导包
    3. const -> 常量声明
    4. var -> 变量声明
    5. func -> 函数声明
    6. defer -> 延迟执行
    7. go -> 语法糖
    8. return -> 函数返回
  2. 声明复合数据结构
    1. struct -> 定义结构类型
    2. interface -> 接口类型
    3. map -> map类型
    4. chan -> 通道类型
  3. 程序结构流程
    1. if else -> 条件
    2. for range break continue -> 循环
    3. switch select type default fallthrough -> switch, select

标识符

  • 标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~ Z和a~ z)数字(0~9)、下划线“_”组成的序列,但是第一个字符必须是字母或下划线而不能是数字。

  • 下划_是一个特殊的标识符,称为空白标识符,它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用_作为变量对其它变量进行赋值或运算。

  • 在使用标识符之前必须进行声明,声明一个标识符就是将这个标识符与常量、类型、变量、函数或者代码包绑定在一起。在同一个代码块内标识符的名称不能重复。

遵守规则:

  • 由 26 个英文字母、0~9、_组成
  • 不能以数字开头,例如 var 1num int 是错误的
  • Go语言中严格区分大小写
  • 标识符不能包含空格
  • 不能以系统保留关键字作为标识符

预定义标识符

内建常量: true false iota nil内建类型: int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptrfloat32 float64 complex128 complex64bool byte rune string error内建函数: make len cap new append copy close deletecomplex real imagpanic recover
  • 程序一般由关键字、常量、变量、运算符、类型和函数组成。
  • 程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}。
  • 程序中可能会使用到这些标点符号:.、,、;、: 和 …。
  相关解决方案