指针
Go 有指针,但不支持多级指针。
C 有指针,并且支持多级指针。
垃圾回收
switch case 语句
Go 的 switch-case 语句默认自带 break,C 和 Java 是没有的。
if 语句
Go 的 if 语句和 for 语句一样,可以声明一个只在 if / for 语句作用域之内的变量,C 和 Java 不支持。
多值返回
变量声明
Go 的变量声明语法是:名称 + 类型,C 和 Java 是:类型 + 名称。
包管理
Go 使用官方的 Go Modules 包管理工具,除了一些库依赖 GitHub,其它都挺好用的。
C/C++ 使用 Make、CMake…… 包管理工具,由于历史包袱太重,C 的各种库使用各种不同的包管理工具,相比于 Go 和 Java 来说比较难用。
Java 使用 Maven 和 Gradle 包管理工具,还有个中央 Maven 仓库,使用体验很好。
实现接口
Go 中采用隐式实现接口的方式,一个类型只要实现了某个接口的所有方法,则就是实现了该接口,不需要使用也没有 implements
关键字。
C 中没有接口的概念。
Java 中需要显示声明实现接口,需要使用 implements
关键字。
数据结构
语言 \ 数据结构 | array | slice / list | set | map |
---|---|---|---|---|
Go | ✅ | ✅ | ❌ | ✅ |
C | ✅ | ❌ | ❌ | ❌ |
Java | ✅ | ✅ | ✅ | ✅ |