Go和C++对比

  Go C++  
  Go编译器之前采用C编写的,后来改为Go编写。 C++有多个编译器家族:MSVC, clang, g++  
 

Go专为现代多核处理器设计,支持并发编程,主要用于web后端

C++出现早,起初是为了扩展C,后来被用在各种地方,甚至用来编写其他语言的编译器和解释器  
  有延迟垃圾回收功能,防止内存泄漏 有智能指针,RAII机制,防止内存泄漏  
  Go代码更紧凑,简单可扩展,静态编译型语言,有一些内置特性(垃圾收集) C++属于“中级语言”,编写更复杂,又称为DIY语言,不具备许多特性,但可以基于语言构建你想要的任何特性  
  编译时间快 编译时间慢 (编译时间依赖于编码的内容)  
  Go是过程式的并发型编程语言,Go没有带构造器/析构器的类 C++是面向对象的编程语言  
  Go在运行时会慢一些,因为Go配置了一些特性,最大的一块是 垃圾回收机制。 C++运行很快,轻量快速因为C++缺少那些语言上的特性(编码更容易,但生成代码慢) Go的运行速度没有明显慢于C++,除非做大量的计算,不然的话速度上的差异不会引起太大的注意。
安全性 Go通过限制指针运算来避免缓冲区溢出。 强制程序员使用包含边界检查的方法,以防止溢出。 C++允许指针运算,有可能会出现缓冲区溢出。  
应用 Go更像是一个密闭的系统,进入Go的内部工作机制要困难的多。例如,Go 的臭名昭著的垃圾收集就是如此。如果程序员想要修改垃圾回收的机制,或者确定它是否还在,他们会很难做到这一点。 目前主要用于Web后端 C++语言很干净,你可以访问代码的任何地方。 可以用于任何应用上面。  
  在Go语言中,map是通过引用传递的 C++中,map是按值传递的。  
  Go语言不使用头文件,使用包,使用import 导入 C++使用头文件  
  Go不支持隐式转换 C++支持隐式转换  
  Go不支持函数重载,不支持用户自定义运算符 C++支持函数重载,支持用户自定义运算符  
  空指针 nil  C++使用NULL 0 或者nullptr表示空指针  
  Go语言使用panic和recover处理异常  C++使用 try-catch-throw 来处理异常  
  Go语言没有 while 和do-while ,但是for 可以实现while 循环 C++有while do-while 循环   
  Go的类型更强    
  Go使用goroutine和channel 实现多线程开发 通过 发送消息的形式  C++使用线程  
       

 

参考:https://geek-docs.com/cpp/cpp-ask-answer/the-difference-between-go-and-c.html

posted @ 2023-01-31 11:43  重新出发123  阅读(1083)  评论(0)    收藏  举报