go语言官方下载安装
官网:golang.org(需翻墙)
国内下载:Go下载 - Go语言中文网 - Golang中文社区
根据自己的系统(mac/Linux/Windows)自行下载即可
Go 语言介绍
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
Go 语言特色
简洁、快速、安全
并行、有趣、开源
内存管理、数组安全、编译迅速
Go 语言用途
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
第一个go语言程序
package main import "fmt" func main() { fmt.Println("Hello, World!") }
要执行 Go 语言代码可以使用 go run 命令。
Go 语言的基础组成有以下几个部分:
包声明
引入包
函数
变量
语句 & 表达式
注释
这些和其他的语言的组成部分是一样的 ,所以有其他语言基础的小伙伴们可能会更好学一点哦!
Go语言的特性
语法简单
Go语言的极简
极简:代码一经写出,就能知道跑出来是什么效果,有什么东西,内存又是如何进行分配的,
Go 从零开始,没有历史包袱,在汲取众多经验教训后,可从头规划一个规则严谨,Go语言的语法规则严谨使得,大部分人进行写出的代码都是一样的,作为一个极简的语言,它放弃了“灵活性“换来了”极简性”。
并发模型
如今,并发程序,是每个程序员必不可少的基本技能,但是Go反其道而行之,
将一切都并发化,运行时用 Goroutine 运行所有的一切,包括 main.main 入口函数。
Goroutine 是 Go 最显著的特征,它用类协程的方式来处理并发单元,但是在运行时层面做了更深度的优化处理。这使得语法上的并发编程变得极为容易,无须处理回调,无须关注线程切换,一个字——“简”。
内存分配
内存分配器完整保留了 tcmalloc 的原始架构。使用 cache 为当前执行线程提供无锁分配,多个 central 在不同线程间平衡内存单元复用。在更高的层次里,heap 则管理着大块内存,用以切分成不同等级的复用内存块。快速分配和二级内存平衡机制,让内存分配器能优秀地完成高压力下的内存管理任务,这也是Go的一个内存特点,在近期,编译器优化卓有成效。它将对象分配在栈上,用来降低垃圾回收压力,减少管理消耗,提升执行性能,这样大大提高了部分性能。
垃圾回收(标记清算法)
标记清扫算法是一个很基础的垃圾回收算法,该算法中有一个标记初始的 root 区域,以及一个受控堆区。root 区域主要是程序运行到当前时刻的栈和全局数据区域。在受控堆区中,很多数据是程序以后不需要用到的,这类数据就可以被当作垃圾回收了。
判断一个对象是否为垃圾,就是看从 root 区域的对象是否有直接或间接的引用到这个对象。如果没有任何对象引用到它,则说明它没有被使用,因此可以安全地当作垃圾回收掉。
标记清扫算法分为两阶段,分别是标记阶段和清扫阶段。
标记阶段,从 root 区域出发,扫描所有 root 区域的对象直接或间接引用到的对象,将这些对上全部加上标记;
清扫阶段,扫描整个堆区,对所有无标记的对象进行回收。
静态链接
静态链接被当作优点宣传,只须编译后的一个可执行文件,无须附加任何东西就能部署,静态编译的好处显而易见。将运行时、依赖库直接打包到可执行文件内部,简化了部署和发布操作,无须事先安装运行环境和下载诸多第三方库。这种简单方式对于编写系统软件有着极大好处,但是由于编译器都在完善动态库 buildmode 功能,所在未完成的buildmode时期,其实还是优点小尴尬的。
标准库
功能完善、质量可靠的标准库为编程语言提供了充足动力,Go 标准库虽称不得完全覆盖,但也算极为丰富。其中值得称道的是 net/http,仅须简单几条语句就能实现一个高性能 Web Server,优秀第三方资源也是语言生态圈的重要组成部分。近年来崛起的几门语言中,Go 算是独树一帜。
工具链
完整的工具链对于日常开发极为重要,编译、格式化、错误检查、帮助文档,还是第三方包下载、更新都有对应的工具。其功能未必完善,但起码算得上简单易用,不会有太多的复杂使用方法。内置完整测试框架,其中包括单元测试、性能测试、代码覆盖率、数据竞争,以及用来调优的 pprof,这些都是保障代码能正确而稳定运行的必备利器。内置完整测试框架,其中包括单元测试、性能测试、代码覆盖率、数据竞争,以及用来调优的 pprof,这些都是保障代码能正确而稳定运行的必备利器。
总结
这篇文章,主要是讲了,go语言的一些特点和特色,简单介绍了一下go语言,以后会慢慢进行更深入内容的更新,大家如果有什么不同的意见或者是想法可以随时在评论区艾特我