Go系列教程(二): 基础语法

120 阅读2分钟

(一) 标识符与关键字

1.1 命名方式

友情提示: 命名的时候不能命名关键字和保留字 go变量、常量、自定义类型、包、函数的命名方式须遵循规则:

  • 首字符任意Unicode字符核或下划线
  • 首字符之外的部分可以任意Unicode字符核或下划线或者数字组成
  • 名字长度不受限制
  • 建议: 英文字母、下划线、数字组成

1.2 关键字(25)

| break | default | func | interface | select | case | defer | go | map | struct | chan | else | goto | package | switch | const | if | range | type | continue | for | import | return | fallthrough | var |

1.3 保留字

1.3.1 常量

| ture | false | iota | nil |

1.3.2 数据类型

| int | int8 | int16 | int32 | int64 |

| uint | uint8 | uint16 | uint32 | uint64 |

| uintptr | floa32| float64 | complex128 | complex64 | bool | byte | rune | string | error |

1.3.3 函数

| make | len | cap | new | append | copy | close | delete | complex | real | imag | panic | recover |

(二) 操作符与表达式

二进制计算方式:负数表达方式,正数二进制取反并补码1

2.1 运算符

2.1.1 算法运算符

不支持前置 ++ --主要包含: 加(+)、减(-) 、 乘(*)、 除(/) 、求余(%)、后置加加(++)、后置减减(—)

2.1.2 关系运算符

友情提示:==比较数组:相同维数且相同个数元素的数组才能做比较 、每个元素都要相同。

  • 两个值是否相等:==
  • 大于:>
  • 两个值是否不等:
  • 小于:<
  • 大于等于:
  • 小于等于:

2.1.3 逻辑运算符

  • 且(&&):两个条件满足方为true ,否则为false
  • 或(||):只要有一个条件满足就返回true ,否则为false
  • 非(!):条件取反

2.1.4 位运算符

友情提示: 由于|在表格语法中无法打出,以/代替

位运算符功能描述
&按位与运算符
/按位或运算符
^按位异或运算符
<<左移运算符左移 n 位就是:乘以2的 n
>>右移运算符右移 n 位就是:除以2的 n

(三) 变量|常量|字面量

变量初始化:数值类型初始化0,字符串类型初始化为空字符串,布尔类型初始化false,引用类型、函数、指针、接口初始化nil

3.1 变量命名

  • 定义类型并赋值:var str string="JACK"
  • 多个变量同时定义类型并赋值:var a,b int =1,2
  • 类型推荐赋值:var a="name"
  • 多个变量类型推荐赋值:var c,d=1,3
  • 声明并初始化:a:=1
  • 下划线匿名变量:_,d:=1,3(不占用命名空间和内存)

3.2 常量

  • 定义单个常量:const PI float32=3.14
  • 定义多个常量:
const(
   PI = 3.14
   E = 2.71
)
const(
   a=100
   b  //100,跟上一行值相同
   c  //100,跟上一行值相同
)
  • iota定义常量
const(
   a=iota //默认值0,以下依次+1
   b
   c
)

3.3 字面量

字面量: 没有出现变量名,直接出现了值

fmt.Printf("Hello World")

(四) 变量作用域

  • 全局变量: 大写字母开头,package所有位置都可访问,跨包需要带package包名
  • 包内访问: 小写字母开头
  • 局部变量: 小写字母开头,仅限函数内访问

(五) 注释与godoc

5.1 注释

// 1. 单行注释

/**
   2. 多行注释【推荐】
 */

5.2 godoc

网页版代码注释文档,建议在Linux和OS系统使用

  • 安装:go get golang.org/x/tools/cmd/godoc
  • 启动http:godoc -http=:6060
  • 浏览器访问:http://127.0.0.1:6060/pkg/项目名