Skip to content

Latest commit

 

History

History
97 lines (68 loc) · 5.04 KB

1.Golang简介(一).md

File metadata and controls

97 lines (68 loc) · 5.04 KB

Golang简介(一)

Go语言(Golang)最初是由Robert Griesemer,Rob PikeKen Thompson在谷歌于2007年开发出来的编程语言。Go编程语言是静态类型语言,语法类似于C语言,它提供了垃圾收集,类型安全,动态的输入能力,还有很多先进的内置类型,例如,可变长度数组和映射(键-值对)。它还提供了丰富的标准库。

Go编程语言是一个开源项目,它使程序员更具生产力。

Go语言具有很强的表达能力,它简洁、清晰而高效。得益于其并发机制, 用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型系统则使程序结构变得灵活而模块化。Go代码编译成机器码不仅非常迅速,还具有方便的垃圾收集机制和强大的运行时反射机制。 它是一个快速的、静态类型的编译型语言,感觉却像动态类型的解释型语言。

Go编程语言是在2009年11月正式对外发布,主要是应用谷歌的于一些生产系统链中。

Golang官网

Go语言出现场景:

  • C/C++ 的发展速度无法跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言,因此人们需要一门新的系统编程语言来弥补这个空缺,尤其是在计算机信息时代。
  • 对比计算机性能的提升,软件开发领域不被认为发展地足够快或者比硬件发展更加成功(有许多项目均以失败告终),同时应用程序的体积始终在不断地扩大,这就迫切地需要一门具备更高层次概念的低级语言来突破现状。
  • Go语言出现之前,开发者们总是面临非常艰难的抉择,究竟是使用执行速度快但是编译速度并不理想的语言(如:C++),还是使用编译速度较快但执行效率不佳的语言(如:.NETJava),或者说开发难度较低但执行速度一般的动态语言呢?显然Go语言在这3个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。

学习Go语言的第一步是先去官网上下载安装go:

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这个环境变量。这个环境变量指定之后,我们编译源代码等生成的文件都会放到这个目录下.这个工作目录我们可以根据自己的设置指定,比如我的Macuser/xxx/go下该目录下有3个子目录,他们分别是:

.
├── bin
├── pkg
└── src
  • bin文件夹存放命名生成的可执行文件
  • pkg文件夹是存在go编译生成的文件。
  • src存放的是我们的go源代码,不同工程项目的代码以包名区分。

在上面的示例代码中fmt.Println("hello world")P是大写的,这与java有些不同,方法不都是小写的吗?

Go语言中,如果以大写字母开头,则是导出的名称。导出意味着相应包装的输入者可以访问函数或变量/常数。 在导入包之后,只能访问包所导出的名字,任何未导出的名字是不能被包外的代码访问的。 FooFOO都是被导出的名称。名称foo是不会被导出的。 执行代码,注意编译器报的错误。 如将math.pi改名为math.Pi再试着执行一下。

下一篇:Golang变量及函数(二)