从C++到Go (一)1
在开始之前,我建议你以一个通用的目的(而不是以C++的角度)了解一下Go编程语言。The Go Tour是一个非常棒的资源(虽然在国内无法正常访问)。
Go和C++一样,是一种通用的系统编程语言。对于有经验的C++程序员来说,使用Go语言有一些注意事项。这篇文章讨论了Go和C++之间的差异。
非常重要一点是,这两种语言的思维过程存在一些根本的差异,C++的对象模型基于类和类的继承,而Go的对象模型基于接口。
概念差异
- Go没有带有构造函数和析构函数的类,为了代替类的方法、类的继承层级和虚函数,Go提供了接口。另外,在C++中使用模板的地方,Go可以使用接口。
- Go提供了垃圾回收机制,程序员既不需要也不能手动回收内存。同时,程序员也不需要关心内存是分配在栈上还是堆上,不需要分别管理
std::unique_ptr
,std::shared_ptr
,std::weak_ptr
,std::auto_ptr
或普通指针、野指针。Go的运行时系统会代表程序员处理所有容易出错的代码。 - Go有指针的概念,但