1、软件开发的新挑战
- 多核硬件架构
- 超大规模分布式计算集群
- Web模式导致的前所未有的开发规模和更新速度
2、应用程序入口
- 必须是main包:package main
- 必须是main方法:func main()
- 文件名不一定是main.go
3、退出返回值:与其他主要编程语言的差异
- Go中main函数不支持任何返回值
- 通过os.Exit来返回状态
4、获取命令行参数:与其他主要编程语言的差异
- main函数不支持传入参数:func main(
arg []string) - 在程序中直接通过os.Args获取命令行参数
5、编写测试程序
- 源码文件_test结尾:xxx_test.go
- 测试方法名以Test开头:func TestXXX(t *testing.T){...}
6、类型转化:与其他主要编程语言的差异
- Go语言不允许隐式类型转换
- 别名和原有类型也不能进行隐式类型转换
7、类型的预定义值
- math.MaxInt64
- math.MaxFloat64
- math.MaxUint32
8、指针类型:与其他主要编程语言的差异
- 不支持指针运算
- string是值类型,其默认的初始化值是空字符串,而不是nil
9、Go语言没有前置++、--(++a)
10、用==比较数组
- 相同维数且含有相同个数元素的数组才可以比较
- 每个元素都相同的才相等
11、位运算符:与其他主要编程语言的差异
- &^按位置零
- 1 &^ 0 -- 1
- 1 &^ 1 -- 0
- 0 &^ 1 -- 0
- 0 &^ 0 -- 0
12、循环:与其他主要编程语言的差异
- Go语言仅支持循环关键字for:for
(j:=7; j<=9; j++)
13、if条件:与其他主要编程语言的差异
- condition表达式结果必须为布尔值
- 支持变量赋值:
- if var declaration; condition{
- // code to by executed if condition is true
- }
14、switch条件:与其他主要编程语言的差异
- 条件表达式不限制为常量或者整数;
- 单个case中,可以出现多个结果选项,使用逗号分隔;
- 与C语言等规则相反,Go语言不需要用break来明确退出一个case
- 可以不设定switch之后的条件表达式,在此种情况下,整个switch结构与多个if...else...的逻辑作用等同