Go语言学习01-基本程序结构

基本程序结构

1
2
3
4
5
6
package main // 包, 表明代码所在的模块(包)
import "fmt" // 引入代码依赖
// 功能实现
func main() {
fmt.Println("Hello World!")
}

应用程序入口

  1. 必须是 main 包: package main
  2. 必须是 main 方法: func main()
  3. 文件名不一定是 main.go

退出返回值

与其他主要编程语言的差异

  • Go 中main 函数不支持任何返回值

  • 通过 os.Exit 来返回状态

  • main 函数不支持传入参数

    func main(arg [] string)

  • 在程序中直接通过 os.Args 获取命令行参数

编写测试程序

  1. 源码文件以 _test 结尾: xxx_test.go
  2. 测试方法名以 Test 开头: func TestXXX(t *testing.T) {...}

快速设置连续值

1
2
3
4
5
6
7
8
9
const (
Monday = iota + 1
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
1
2
3
4
5
const (
Open = 1 << iota
Close
Pending
)

基本数据类型

bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32, represents a Unicode code point
float32 float64
complex32 complex64

类型的预定义值

  1. math.MaxInt64
  2. math.MaxFloat64
  3. math.MaxUint32

指针类型

与其他主要编程语言的差异

  1. 不支持指针运算
  2. string 是值类型, 其默认的初始化值为空字符串, 而不是 nil

运算符

算数运算符

运算符 描述 实例
+ 相加 A + B 输出结果 30
- 相减 A - B 输出结果 -10
* 相乘 A * B 输出结果 200
/ 相除 B / A 输出结果 2
% 求余 B % A 输出结果 0
++ 自增 A ++ 输出结果 11
自减 A — 输出结果 9

Go 语言没有前置的 ++, —, (++a)

比较运算符

运算符 描述 实例
== 检查两个值是否相等, 如果相等返回 True 否则返回 False (A == B) 为 False
!= 检查两个值是否不相等, 如果不相等返回 True 否则返回 False (A != B) 为 True
> 检查左边值是否大于右边值, 如果是返回 True 否则返回 False (A > B) 为 False
< 检查左边值是否小于右边值, 如果是返回 True 否则返回 False (A < B) 为 True
>= 检查左边值是否大于等于右边值, 如果是返回 True 否则返回 False (A >= B) 为 False
<= 检查左边值是否小于等于右边值, 如果是返回 True 否则返回 False (A <= B) 为True
用 == 比较数组
  • 相同维数且含有相同个数元素的数组才可以比较
  • 每个元素都相同的才相等

逻辑运算符

运算符 描述 实例
&& 逻辑 AND 运算符. 如果两边的操作数都是 True, 则条件 True, 否则为 False. (A && B) 为 False
\ \ 逻辑 OR 运算符. 如果两边的操作数有一个 True, 则条件 True, 否则为 False. (A \ \ B) 为 True
! 逻辑 NOT 运算符. 如果条件为 True, 则逻辑 NOT 条件 False, 否则为 True. !(A && B) 为 True

位运算符

运算符 描述 实例
& 按位与运算符 “&” 是双目运算符. 其功能是参与运算的两数各对应的二进位相与. (A & B)结果为 12, 二进制为 0000 1100
\ 按位与运算符 “\ “ 是双目运算符. 其功能是参与运算的两数各对应的二进位相或. (A \ B) 结果为61, 二进制为 0011 1101
^ 按位与运算符 “^” 是双目运算符. 其功能是参与运算的两数各对应的二进位相异或. (A ^ B) 结果为49, 二进制为 0011 1101
<< 左移运算符 “<<” 是双目运算符. 左移 n 位就是乘以 2 的 n 次方. 其功能把 “<<” 左边的运算数的各二进位全部左移若干位, 由 “<<” 右边的数指定移动的位数, 高位丢弃, 低位补0 A << 2 结果为 240, 二进制为 1111 0000
>> 右移运算符 “>>” 是双目运算符. 右移 n 位就是除以 2 的 n 次方. 其功能是把 “>>” 左边的运算数的各二进位全部右移若干位, “>>” 右边的数指定移动的位数 A >> 2 结果为 0000 1111
与其他主要编程语言的差异

&^ 按位 置零

1 &^ 0 — 1

1 &^ 1 — 0

0 &^ 1 — 0

0 &^ 0 — 0