【06】-Go 语言基本概念-标识符-数据类型-变量-常量

murphyzhao · 2019-09-22 22:51:16 · 99775 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-09-22 22:51:16 的主题,其中的信息可能已经有所发展或是发生改变。

Go 语言基本概念-标识符-数据类型-变量-常量

  • 关键字或保留字
1 2 3 4 5
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 2 3 4 5
append copy print println real
bool byte string uintptr new
true false iota nil panic
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64
complex complex64 complex128 float32 float64
cap close imag make len
recover
  • 数据类型

    • 布尔型
    • 数值类型
    • 字符串类型
    • 派生类型(指针、数组、结构体、Channel、函数、切片、interface、Map 类型)

      数值类型中 rune 类型,类似 int32;uintptr 无符号整形,用于存放一个指针。

      派生类型中,channel、切片、interface、Map 类型比较陌生。

  • 变量

      var identifier type // 定义一个 identifier 变量,类型为 type,变量没有初始化,默认为 0。
      var identifier1, identifier2 type // 定义多个类型为 type 的变量
      var v_name = value // 带初始值的变量声明,省略了类型,编译器自动判断
      v_name := value // 省略 var 的变量声明,左侧必须为未声明的变量,智能用于函数体中,不能用于声明全局变量。这种声明称为初始化声明。
      // 这种因式分解关键字的写法一般用于声明全局变量
      var (
          vname1 v_type1
          vname2 v_type2
      )
    

    注意区分值类型和引用类型。

    空白标识符 _,是只写的,常用于抛弃值。

  • 常量

    常量在程序运行过程中不能被修改。

      const identifier [type] = value
      const c_name1, c_name2 = value1, value2
    

    常量还可以用作枚举:

      const (
          Unknown = 0
          Female = 1
          Male = 2
      )
    
  • 特殊常量 iota

    iota,可以认为是一个可以被编译器修改的常量。参考菜鸟教程

  • 关于 unsage.Size(字符串) 表达式的返回值问题

    go 语言的 string 是一种数据类型,这个数据类型占用 16 字节空间,前 8 字节是一个指针,指向字符串值的地址,后八个字节是一个整数,标识字符串的长度;注意 go 语言的字符串内部并不以 '\0' 作为结尾,而是通过一个长度域来表示字符串的长度。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

99775 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传