第一个Go程序
go version //查看golang 版本 go build //编译源码文件
package main //和Java一样 表示代码所属的包
import "fmt" //和Java一样 导入代码依赖
//程序主入口函数
func main() {
fmt.Printf("Hello World!")
}
go build编译后,程序主入口有3个条件。
- 必须属于main包 :package main
- 必须是main函数: func main()
- 文件名不一定是main.go
在Java语言中package的声明必须和源码文件的所在目录保持一致,在golang中源码文件可以在任意包存在。
**
与其他编程语言的差异
退出返回值
go语言main函数不支持任何返回值
func main must have no arguments and no return values
os.Exit()来返回状态
package main //和Java一样 表示代码所属的包
import (
"fmt"
"os"
) //和Java一样 导入代码依赖
//程序主入口函数
func main() {
fmt.Println("Hello World!")
os.Exit(12)//可以使用异常值来传递返回值
}
获取命令行参数
main函数不支持传入参数
func main(arg []string)
在程序中直接通过os.Args获取命令行参数
package main
import (
"fmt"
"os"
)
//程序主入口函数
func main() {
if len(os.Args)>1 {
fmt.Println(os.Args[1])//打印控制台传入的参数
}
}
测试
package include
import (
"testing"
) //和Java一样 导入代码依赖
func TestFibList(t *testing.T) {
var a int =1
var b int =1
t.Log(a)
for i:=0;i<5;i++ {
t.Log(" ",b)
temp :=a //把a临时存起
a=b //修改a
b=temp+a //修改b
}
}
一、Go语言简介
Go(又称 golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
GO语言的开发阵营可以说是空前强大,主要成员中不乏计算机软件界的历史性人物,对计算机软件的发展影响深远。Ken Thompson,来自贝尔实验室,设计了B语言,创立了Unix操作系统(最初使用B语言实现),随后在Unix开发过程中,又和Dennis Ritchie一同设计了C语言,继而使用C语言重构了Unix操作系统。Dennis Ritchie和Ken Thompson被称为Unix和C语言之父,并在1983年共同被授以图灵奖,以表彰他们对计算机软件发展所作的杰出贡献。Rob Pike,同样来自贝尔实验室,Unix小组重要成员,发明了Limbo语言,并且和Ken Thompson共同设计了UTF-8编码,《Unix编程环境》、《编程实践》作者之一。
可以说,GO语言背靠Google这棵大树,又不乏牛人坐镇,是名副其实的“牛二代”。
Go语言经典项目
大名鼎鼎的Docker,完全用GO实现,业界最为火爆的容器编排管理系统kubernetes,完全用GO实现,之后的Docker Swarm,完全用GO实现。除此之外,还有各种有名的项目如etcd/consul/flannel等等,均使用GO实现。有人说,GO语言之所以出名,是赶上了云时代,但为什么不能换种说法,也是GO语言促使了云的发展?
除了云项目外,还有像今日头条、UBER这样的公司,他们也使用GO语言对自己的业务进行了彻底的重构。