go开发环境的搭建
go get -u -v github.com/golang/lint/golint go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/newhook/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
3. 调试工具delve安装
a.打开网址:https://github.com/derekparker/delve/tree/master/Documentation/installation
b.mac: brew install go-delve/delve/delve
c.linux&windows:go get github.com/derekparker/delve/cmd/dlv
每一个程序只能有一个main包,带有main()函数,不能重复定义。
只有包名是package main、带有main()函数才是可执行文件,其他的都是库,编译后生成.a文件。
package main
//包名
import(
"fmt"
)
func main() {
fmt.Println(
"hello world")
}
4、GOPATH工作区
a.所有项目都需要放到GOPATH/src下面
b.GOPATH路径最好只设置一个
5、基本命令
go test 执行单元测试或压力测试
go env 显示go相关的环境变量
go fmt 格式化源代码
go run 快速执行go文件,就想执行脚本一样
go build编译程序,生成二进制可执行额那件
go install 安装可执行文件
如果在环境变量中设置GOOS=linux,go build编译,编译文件放到linu平台上运行。
三、golang语言特性
1. 垃圾回收
a、内存自动回收,再也不需要开发人员管理内存//开发代码中不能存在无引用的变量,不然代码出错
b、开发人员专注业务实现,降低了心智负担
c、只需要new分配内存,不需要释放
2. 天然并发
a、从语言层面支持并发,非常简单
b、goroute,轻量级线程,创建成千上万个goroute成为可能
c、基于CSP(Communicating Sequential Process)模型实现(基于goroute、channel)
并发实例:
不需要担心编码问题,全是utf-8
:=相当于变量的声明和赋值
在go名称中不建议使用下划线 _
//单行注释
/* */多行注释
gofmt -w filename 格式化代码文件(排版)
package main
import(
"time"
)
func main() {
for i := 0; i < 100; i++ { go test_goroute(i)
//开启多线程
}
time.Sleep(time.Second)
}
main.go
package main
import(
"fmt"
)
func test_goroute(a
int) { fmt.Println(a)
}
goroute.go 3. channel(管道,进程间的通信)
a、管道,类似unix/linux中的pipe
b、多个goroute之间通过channel进行通信
c、支持任何类型
func main() { pipe :
= make(chan int,3)//make分配内存空间 pipe
页:
[1]