1.右大括号不允许换行,否则编译报错
2.不允许有未使用的包或变量
3.错误处理原始,虽然引入了defer、panic、recover处理出错后的逻辑,函数可以返回多个值,但基本依靠返回错误是否为空来判断函数是否执行成功,if err != nil语句较多,比较繁琐,程序没有java美观。(官方解释:提供了多个返回值,处理错误方便,如加入异常机制会要求记住一些常见异常,例如IOException,go的错误Error类型较统一方便)
4.[]interface{}不支持下标操作
5.struct没有构造和析构,一些资源申请和释放动作不太方便
6.仍然保留C/C++的指针操作,取地址&,取值*
7.没有泛型 (官方解释:go是服务器语言,主要特点是可扩展,可读和高并发性。加入泛型会带来run-time和类型体系复杂度提高的代价,且可用空的interface 替代,现在go越来越成熟,可以考虑在go2版本中加入泛型这些特性)