go语言的关键字极其少,充分体现了少就是多的哲学。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
go1.18可能加入一些新的关键字来支持泛型,例如any代表interface{},因为go 1.18只发布了beta1版本所以这个还不能盖棺定论。
可以看出这些关键字里面居然连常见的int等类型定义都没有,却添加了内置支持类型map和chan。map的作用不用多说,键值对处理的必备,而chan则是go语言处理协程通讯的基本工具。但是int等类型真的不是关键字吗?我的回答是,那当然,看看下面这段奇怪的代码你就明白了。
package main
import "fmt"
type int float32
func main(){
make:=func(){
var a int
a = 12.3
fmt.Println(a)
}
make()
}
代码“居然”正常编译运行了,不过这样的写法估计你离离职也不远了吧。
不得不说go的关键字设计确实有点大胆,只能说佩服佩服。