buhong 发表于 2018-9-21 08:11:27

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]
查看完整版本: go开发环境的搭建