GO_00:GO语言开篇

Go的发展史

  Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

  Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

当前行业背景

  计算机一直在演化,但是编程语言并没有以同样的速度演化。现在的手机,内置的CPU核数可能都多于我们使用的第一台电脑。高性能服务器拥有64核、128核,甚至更多核。但是我们依旧在使用为单核设计的技术在编程。

  编程的技术同样在演化。大部分程序不再由单个开发者来完成,而是由处于不同时区、不同时间段工作的一组人来完成。大项目被分解为小项目,指派给不同的程序员,程序员开发完成后,再以可以在各个应用程序中交叉使用的库或者包的形式,提交给整个团队。

  如今的程序员和公司比以往更加信任开源软件的力量。Go语言是一种让代码分享更容易的编程语言。Go 语言自带一些工具,让使用别人写的包更容易,并且 Go 语言也让分享自己写的包更容易。

GO解决现代编程难题

  Go语言开发团队花了很长时间来解决当今软件开发人员面对的问题。开发人员在为项目选择语言时,不得不在快速开发和性能之间做出选择。C和C++这类语言提供了很快的执行速度,而Ruby、PHP和Python这类语言则擅长快速开发。Go语言在这两者间架起了桥梁,不仅提供了高性能的语言,同时也让开发更快速。

  作为一门语言,Go不仅定义了能做什么,还定义了不能做什么。Go语言的语法简洁到只有几个关键字,便于记忆。Go语言的编译器速度非常快,有时甚至会让人感觉不到在编译。所以,Go开发者能显著减少等待项目构建的时间。因为Go语言内置并发机制,所以不用被迫使用特定的线程库,就能让软件扩展,使用更多的资源。Go语言的类型系统简单且高效,不需要为面向对象开发付出额外的心智,让开发者能专注于代码复用。Go语言还自带垃圾回收器,不需要用户自己管理内存。让我们快速浏览一下这些关键特性(当然,Go的垃圾回收机制还是没有java语言中的那么强大,虽然开发人员扬言要赶超JVM垃圾回收机制,那就让我们拭目以待吧。截止到我发这篇博客的时间:2017-03-16 22:13:42 版本已经升级到了1.8)

资源充分利用

  作为程序员,要开发出能充分利用硬件资源的应用程序是一件很难的事情。现代计算机都拥有多个核,但是大部分编程语言都没有有效的工具让程序可以轻易利用这些资源。这些语言需要写大量的线程同步代码来利用多个核,很容易导致错误。

  Go语言对并发的支持是这门语言最重要的特性之一。goroutine很像线程,但是它占用的内存远少于线程,使用它需要的代码更少。通道(channel)是一种内置的数据结构,可以让用户在不同的goroutine之间同步发送具有类型的消息。这让编程模型更倾向于在goroutine之间发送消息,而不是让多个goroutine争夺同一个数据的使用权。

Go 语言用途

  Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

  对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

第一个Go 程序

  接下来我们来编写所有初学程序必会的打印程序,打印:Hello World!。 hello.go(Go 语言源文件的扩展是 .go),代码如下:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
} 

以上代码运行结果如下:

go run hello.go
Hello, World!
时间: 2024-10-22 12:02:17

GO_00:GO语言开篇的相关文章

C语言开篇

Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具. 1.小程序test_gets.c #include <stdio.h> #define MAX 100 main() { char name[MAX]; printf("Input the name:\n"); gets(name); printf("The name is: %s \n",na

Study_Python3_Day1

Python的安装:请参考 https://blog.csdn.net/qq_29883591/article/details/52664478  若遇到lisense server问题,参考https://zhuanlan.zhihu.com/p/31689486 语言开篇信仰:Holle word print  ("Holle word") 变量赋值:python定义变量,不需定义类型,值是什么数据类型,就决定了这个变量的类型,变量名引用了数值的同时也引用了它的类型. 例: nam

【Material Design视觉设计语言】开篇

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells Material Design,即原质化设计,是Google官方退出的视觉设计语言,目的在于统一Android应用界面设计,提升用户体验.事实上不仅仅在Android上,在HTML等其他领域,Material Design也表现出了旺盛的生命力. 一 设计目标 Materia

&quot;GCC + C&quot; 语言入门首选推荐套餐-WangBook.com开篇

想到哪里写到哪里. 这里想分享的内容如下: 1.如果想在程序方便做一些独到的事情,C语言是入门语言的首选.当然现在也有大侠指出当前Swift也是一个更清新.自然的选择.但如果您之后想要对算法和汇编等深入学习,或者接触Objective-C还是建议您用C作为入门首选. 2.C语言真的很“没用”.作为一个初入江湖的小弟,不可能拿着它直接开辟出一片新天地,因为当下受开发工具和客户需求的制约,当下开发很多更贴合实际需求的应用时,C往往不是首选,因为有更实用的语言工具可选,但如果你对C有了一定的基础,相信

小巧灵活语言LUA小开篇

哇塞,第一篇博客,感觉好紧张啊.之前用c++来写cocos,后来了解到用脚本来写更加便于后期维护更新.最近便开始琢磨这个小脚本lua,lua语言封装的很小巧也很灵活,代码格式也是很简单并不像c++java那样严格.首先呢便是这个编译环境的搭配.<lua官网:http://www.lua.org/> 上面便是最新版的5.3.1下载包,我们将其下载解压.可以看到src目录下存在很多.c和.h文件,然后我们新建一个vs2012工程,将所有的文件导入生成.然后我们会得到一个lua 和luac的exe可

统一建模语言UML整理之开篇

引言: 这段时间将致力于写UML方面的博客,由于个人能力的有限,如果博客中出现错误的地方还请广大博友批评指正.为了更好地了解一个过程或者事物,人们通常根据所研究对象的某些特征(形状.结构.或行为等)建立相关的模型(Model).模型是从一个特定的视点对系统进行的抽象,它可以是实物模型,例如建筑模型,教学模型.玩具等,也可以是抽象数字或图示模型,例如数学公式或图形等.模型建立的目的不是复制真实的原物,而是帮助人们更好的理解复杂的事物本质,反应过程或事物内部各种因素执念的相互关系.下面就让我们进入U

《深入学习计算机系统(C语言)》学习进程之开篇第一章计算机系统漫游

1.1  信息就是位 + 上下文 程序的生命周期从源程序开始——这是一个有着某种扩展名(比如C源程序的文件扩展名为.c,java源程序的文件扩展名为.java,c++源程序的扩展名为.cpp等等)的文本文件.这些文本文件由一个个文本字符构成,而每个文本字符又由8个bit来构成. 数据有不同的数据对象,即不同的由bit组成的“实体”. 1.2  程序被其他程序翻译成不同的格式 为了在(操作)系统上运行程序,每条源程序上的语句都被其他程序转化为机器语言指令.然后将这些指令以可执行目标程序的格式打好包

【Material Design视觉设计语言】应用样式设计

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Material Design视觉设计语言]章节列表 [Material Design视觉设计语言]开篇 [Material Design视觉设计语言]Material Design设计概述 [Material Design视觉设计语言]应用布局设计 [Material D

Html5 Egret游戏开发 成语大挑战(一)开篇

最近接触了Egret白鹭引擎,感觉非常好用,提供了各种各样的开发工具让开发者和设计者更加便捷,并且基于typescript语言开发省去了很多学习成本,对于我们这种掉微软坑许久的童鞋来说,确实很有吸引力,在开发中最浪费时间就是设计和调试的阶段,js的语言过于自由,自由到有时候写错了都不知道,但typescript可以使用开发IDE帮助排错和调试,不得不说确实很有效率,在这之前,我在egret论坛里发了几个小游戏做练手,最近的一个<疯狂猜歌名>在素材齐备的情况下,仅用了不到1天的时间完成了开发,以