青训营笔记

46 阅读2分钟
 import(
   "fmt"
 )

导入标准库里的fmt包,输入输出字符串,格式化字符串

定义变量:

var 或者 变量:=xxx

常量:

没有确定类型,const s= ,是情况而定。

if - else

没有括号

循环:

只有for循环,同样是没有括号

switch:

不需要加括号,括号内可以是任意变量。也不需要加break

数组,切片:

数组在后面指定类型。

切片通过make,append使用

map:

通过make,指定类型定义。通过r,ok判断map值是否存在。

range:

遍历,第一个值是索引,第二个值是value。

函数:

  1. 返回类型在后面,声明变量的类型也定义在变量后面。
  2. 返回个数也由定义了几个返回类型决定。

指针:

对一个值进行修改。

结造体:

带类型的字段的集合。

作为参数,分为带指针,不带指针。

作为方法,分为带指针,不带指针。

作用域

Go在词法上使用块来限定范围

  1. 预先声明的标识符的范围是 universe block / 宇宙块。
  2. 表示在顶层(在任何函数之外)声明的常量、类型、变量或函数(但不是方法)的标识符的作用域是 package block / 包块。
  3. 导入包的包名的作用域是包含导入声明的文件的文件块。
  4. 表示方法接收者、函数参数或结果变量的标识符的作用域是函数体。
  5. 在函数内部声明的常量或变量标识符的作用域从 ConstSpec 或 VarSpec(ShortVarDecl为短变量声明)的末尾开始,到最内部包含块的末尾结束。
  6. 在函数中声明的类型标识符的作用域从 TypeSpec中 的标识符开始,到最内部包含块的末尾。

在一个块中声明的标识符可以在一个内部块中重新声明。当在内部声明的标识符范围内时,它表示内部声明所声明的实体。

package clause / 包子句不是声明;包名不出现在任何作用域中。它的目的是识别属于同一包的文件,并为导入声明指定默认的包名。