初识go
一、什么是go
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
罗伯特·格瑞史莫,罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go,,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。
二、go的特点
1、自动垃圾回收 2、丰富的内置类型 3、函数多返回值 4、匿名函数和闭包 5、错误处理 5、类型和接口:Go语言的类型定义直接沿袭了C语言的结构(struct),不支持继承和重载,而只是支持了最基本的类型组合功能; 6、并发编程:引入goroutine概念 7、UTF-8支持
三、go的目录结构
-- bin (存放编译后生成的可执行文件) -- pkg (存放编译后生成的包文件) -- src (存放项目源码,src 可以存放多个项目源码)
四、go 的基本命令
go run [包名] : 直接运行程序,常在开发时使用
go help [command] : 查看帮助文档
go build [-o 输出名] [-i] [编译标记] [带有main的包] [-race 开启静态检测] # 测试编译,检查是否有编译错误
go get [包路径] : 获取远程包(需提前安装git)
go install 编译包文件并编译整个程序
go test:运行测试文件
go doc 查看文档
五、简单项目讲解
go-test 已在GOPATH 中
test.go
package test import "fmt" var Num int func init(){ Num =100 } func Call(name string) { fmt.Println(name, "this is calculation") }
main.go
package main
// 上面 是包名,表明我们是在main 包中
// 导入需使用的包
import (
"day1/test"
"fmt"
)
// 这是 main 函数 ,一个项目只能有一个main 函数
func main() {
fmt.Println("hello world")
test.Call("jmz")
fmt.Println(test.Num)
/*
结果:
hello world
jmz this is calculation
100
*/
}
使用 go 命令编译一下,执行hello.exe(编译时要在go-test 目录下)
cd go-test
go build -o bin/hello.exe day1/main
/*
说明:
bin/hello.exe 生成的路径 执行程序名 $gopath/bin/hello
day1/main 是文件夹路径 $gopath/src/day/main
day1/main 包中含有且只有一个main 函数
*/
hello.exe
结果
详解:
1、第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。 2、下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。 3、下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。 4、 "//" 是单行注释 '/**/' 是多行注释 5、fmt.Println(...) 将字符串输入至终端,并在字符串的末尾添加\n 6、var Num int 变量的声明方式 var 关键字 Num 开头大写的变量 int 表明Num 是int 类型
7、每条语句后面都无需添加";" 结束,因为在编译过程中编译器已将添加好了