1.右大括号不允许换行,否则编译报错;不允许包含未使用的包(设置vscode工具,保存文件时可自动修改格式)
2.不允许有未使用的变量(vscode工具无法解决)
3.错误处理原始,虽然引入了defer、panic、recover处理出错后的逻辑,函数可以返回多个值,但基本依靠返回错误是否为空来判断函数是否执行成功,if语句较多,比较繁琐,程序没有java美观。(官方解释:提供了多个返回值,处理错误方便,如加入异常机制会要求记住一些常见异常,例如IOException,go的错误Error类型较统一方便,还有panic,recover,defer机制)
4.package main的变量不能被其他package引用(有时不方便)
5.[]interface{}不支持下标操作
6.struct没有构造和析构,一些资源申请和释放动作不太方便
7.变量和函数使用大小写来区分是否对包外可见
8.仍然保留C/C++的指针操作,取地址&,取值*
9.没有泛型 (官方解释:go是服务器语言,主要特点是可扩展,可读和高并发性。加入泛型会带来run-time和类型体系复杂度提高的代价,且可用空的interface 替代,现在go越来越成熟,可以考虑在go2版本中加入泛型这些特性)
来源:CSDN
作者:ferghs
链接:https://blog.csdn.net/busai2/article/details/81194063