Go
语言(Golang)
最初是由Robert Griesemer
,Rob Pike
和Ken Thompson
在谷歌于2007年开发出来的编程语言。Go
编程语言是静态类型语言,语法类似于C
语言,它提供了垃圾收集,类型安全,动态的输入能力,还有很多先进的内置类型,例如,可变长度数组和映射(键-值对)。它还提供了丰富的标准库。
Go
编程语言是一个开源项目,它使程序员更具生产力。
Go
语言具有很强的表达能力,它简洁、清晰而高效。得益于其并发机制, 用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型系统则使程序结构变得灵活而模块化。Go
代码编译成机器码不仅非常迅速,还具有方便的垃圾收集机制和强大的运行时反射机制。 它是一个快速的、静态类型的编译型语言,感觉却像动态类型的解释型语言。
Go
编程语言是在2009年11月正式对外发布,主要是应用谷歌的于一些生产系统链中。
Go
语言出现场景:
C/C++
的发展速度无法跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言,因此人们需要一门新的系统编程语言来弥补这个空缺,尤其是在计算机信息时代。- 对比计算机性能的提升,软件开发领域不被认为发展地足够快或者比硬件发展更加成功(有许多项目均以失败告终),同时应用程序的体积始终在不断地扩大,这就迫切地需要一门具备更高层次概念的低级语言来突破现状。
- 在
Go
语言出现之前,开发者们总是面临非常艰难的抉择,究竟是使用执行速度快但是编译速度并不理想的语言(如:C++
),还是使用编译速度较快但执行效率不佳的语言(如:.NET
、Java
),或者说开发难度较低但执行速度一般的动态语言呢?显然Go
语言在这3个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。
Mac
安装版下载后双击可以看到安装界面,按照提示一步步选择操作即可。安装版默认安装目录是/usr/local/go
,并且也会自动的把/usr/local/go/bin
目录加入到PATH
环境变量中,重新打开一个终端,就可以使用go version
进行测试了,更快捷方便一些。
Go
语言程序可以从3行到数百万行,代码可通过写入到一个或多个扩展名.go
的文本文件。例如,hello.go
。
下面是一个简单的Go
入门程序,hello_world.go
的完整代码如下所示:
package main // 声明包
import "fmt" // 导入fmt包,这里导入的是go的标准库,如果导入本地新自定义的包可用import "./struct_pack/structPack"
func main() {
/*This is my first sample program.*/
fmt.Println("hello world")
}
执行上面的代码:
$ go run hello_world.go
hello world
go run
会将程序编译成二进制文件,然后执行。我们也可以分两部分进行,利用go build
进行构建成二进制文件。
go build hello_world.go
执行完成后你会发现当前目录多了一个hello_world
文件。
我们可以直接执行该二进制文件:
./hello_world
然后就会打印出hello world
。
Go
程序基本上由以下部分组成:
- 软件包声明
- 导入包
- 函数(功能)
- 变量
- 语句和表达式
- 注释
工作目录就是我们用来存放开发的源代码的地方,对应的也是Go
里的GOPATH
这个环境变量。这个环境变量指定之后,我们编译源代码等生成的文件都会放到这个目录下.这个工作目录我们可以根据自己的设置指定,比如我的Mac
在user/xxx/go
下该目录下有3个子目录,他们分别是:
.
├── bin
├── pkg
└── src
bin
文件夹存放命名生成的可执行文件pkg
文件夹是存在go
编译生成的文件。src
存放的是我们的go
源代码,不同工程项目的代码以包名区分。
在上面的示例代码中fmt.Println("hello world")
的P
是大写的,这与java
有些不同,方法不都是小写的吗?
在Go
语言中,如果以大写字母开头,则是导出的名称。导出意味着相应包装的输入者可以访问函数或变量/常数。
在导入包之后,只能访问包所导出的名字,任何未导出的名字是不能被包外的代码访问的。
Foo
和FOO
都是被导出的名称。名称foo
是不会被导出的。
执行代码,注意编译器报的错误。
如将math.pi
改名为math.Pi
再试着执行一下。
- 邮箱 :[email protected]
- Good Luck!