Go初识

原创
2021/01/01 23:16
阅读数 60

Go初识

下载安装包:https://golang.org/dl/

什么是Go语言

  • Go语言也称为 Golang,是由 Google 公司开发的一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言;Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验就可以轻松搞定。

Go语言特点

  • 语法简单:Go语言的语法规则严谨,没有歧义,更没什么黑魔法变异用法。任何人写出的代码都基本一致,这使得Go语言简单易学
  • 并发模型:从根本上将一切都并发化,运行时用 Goroutine 运行所有的一切,包括 main.main 入口函数,Goroutine 是 Go 最显著的特征。它用类协程的方式来处理并发单元,却又在运行时层面做了更深度的优化处理。这使得语法上的并发编程变得极为容易,无须处理回调,无须关注线程切换,仅一个关键字,简单而自然。搭配 channel,实现 CSP 模型。将并发单元间的数据耦合拆解开来,各司其职,这对所有纠结于内存共享、锁粒度的开发人员都是一个可期盼的解脱。666
  • 内存分配:它会竭力将对象分配在栈上,以降低垃圾回收压力,减少管理消耗,提升执行性能。可以说,除偶尔因性能问题而被迫采用对象池和自主内存管理外,我们基本无须参与内存管理操作。
  • 垃圾回收:还在完善中
  • 静态链接:将运行时、依赖库直接打包到可执行文件内部,简化了部署和发布操作,无须事先安装运行环境和下载诸多第三方库。这种简单方式对于编写系统软件有着极大好处,因为库依赖一直都是个麻烦。
  • 标准库:丰富,优秀代表(net、http)
  • 工具链:简单易容,内置完整测试框架,还可通过环境变量输出运行时监控信息,尤其是垃圾回收和并发调度跟踪,可进一步帮助我们改进算法,获得更佳的运行期表现。

Go适合做什么

  • 其实Go语言主要用作服务器端开发,其作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web应用、API应用、下载应用等;除此之外,Go语言还可用于内存数据库和云平台领域。

Java与Go的对比

golang-Java (1).png

特点 Java Golang
性能 Java执行性能比golang差一些 go的性能可以媲美c,c++
并发 Java并发性能比golang差一些 引入了协程,并发粒度相对java更小,性能更高。
生态 Java工具丰富,社区庞大。Spring全家桶十分强大 golang工具比Java少。Beego、****Gin等web框架,稍逊spring
跨平台 支持跨平台。编译部署比较简单。 编译go如同编译C++一样,不同操作系统需要交叉编译,由于依赖服务器的一些环境
统一异常处理 Spring框架可以简单的设置统一异常处理 Gin等框架也可以,对异常和错误统一进行处理,返回统一的错误格式
垃圾回收 支持垃圾回收,并且效率很高 支持垃圾回收。目前垃圾回收效率略低于Java
面向对象 支持面向对象,支持封装,继承,多态 支持面向对象,但是没有继承。满足封装和多态。官方推荐使用组合。认为继承的入侵性太强。
虚拟机 代码运行虚拟机中 无虚拟机
AOP java在运行时能通过字节码操作,强化类功能。实现动态代理。 go是静态语言,不支持动态机器码生成。可以使用策略模式,实现类似功能。
指针 不支持指针操作 支持指针
泛型 支持泛型 Go1.17新版本,也将支持泛型
APM 工具链 非常完善 目前支持还不够完善
网络 拥有Netty,网络支持完善 拥有fasthttp,但是HTTP/2.0不支持,WebSocket 不支持

待续......

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部