Go初识

Wesley13
• 阅读 1012

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的对比

Go初识

特点

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 不支持

待续......

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
Go 1.8 新特性
官方详细说明链接:https://golang.org/doc/go1.8(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgolang.org%2Fdoc%2Fgo1.8)  国内访问:https://golang.google.cn/doc/go1.8(https://www.
Wesley13 Wesley13
3年前
Go 1.9 新特性
官方详细说明链接:https://golang.org/doc/go1.9(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgolang.org%2Fdoc%2Fgo1.9)  国内访问:https://golang.google.cn/doc/go1.9(https://www.
Wesley13 Wesley13
3年前
Go 1.7 新特性
官方详细说明链接:https://golang.org/doc/go1.7(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgolang.org%2Fdoc%2Fgo1.7) 国内访问:https://golang.google.cn/doc/go1.7(https://www.o
Wesley13 Wesley13
3年前
Go 1.6 新特性
官方详细说明链接:https://golang.org/doc/go1.6(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgolang.org%2Fdoc%2Fgo1.6)  国内访问:https://golang.google.cn/doc/go1.6(https://www.
京东云开发者 京东云开发者
4个月前
三十分钟入门基础Go(Java小子版)
前言Go语言定义Go(又称Golang)是Google的RobertGriesemer,RobPike及KenThompson开发的一种静态、强类型、编译型语言。Go语言语法与C相近,但功能上有:内存安全,GC,结构形态及CSPstyle并发计算。适用范围