最近准备从 Java 转 Golang,收集了一些 Golang 的学习资料。
决定从 Golang 的文档看起。
命名
Go的关键字数量非常克制,只有 25 个:
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
其他语言:如 C++:82个,Java:50个,PHP:49个,Python3.7:35个
对于可见性:
1)声明在函数内部,是函数的本地值,类似private
2)声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect
3)声明在函数外部且首字母大写是所有包可见的全局值,类似public
变量
从 C\C++ 或者Java语言转 Golang, 第一个不习惯的,可能就是变量的声明。
var 变量名 变量类型
省流写法:
// 批量声明
var (
a string
b int
)
// 批量初始化,这里还包含了类型推导
var name, age = "豆小匠的编程日常", 18
// 短变量声明(只能用于函数内部)
sex := 1
流程控制
if 布尔表达式 {
// 布尔表达式为 true 执行
}
// 注意在 if 后声明的变量只在 if 代码块里有效(含 else if 或 else 里的代码块)
if name, age := "豆小匠", 18; age < 22 {
println(name)
}
同样,switch 、 for 等流程控制关键字后也是不接括号的
// go 中的 case 后默认带有 break,如果不需要 break,可以使用fallthrough
switch key {
case a:
...
case b:
...
default:
...
}
for init; condition; post {
} // 和其他语言 for 循环差不多
for condition {
} // 相当于 while(condition){}
for {
} // 相当于 while(1)
init: 一般为赋值表达式,给控制变量赋初值;
condition: 关系表达式或逻辑表达式,循环控制条件;
post: 一般为赋值表达式,给控制变量增量或减量。
从这几方面,go 语言的简洁性可见一斑。