go开发环境搭建

go开发环境搭建

windows平台go开发环境搭建

安装go1.14.13版本

  1. 下载go安装包:windows平台;https://golang.google.cn/dl/

  2. 下一步安装即可;

  3. 选择一个安装路径;

    image-20201224150134689

  4. 安装过程中会自动添加GOPATH环境变量(但后面要删除并自定义)

    image-20201224150421692

  5. 查看go版本

    image-20201224150433711

GOROOT与GOPATH

GOROOT:

  1. go的安装路径,如上面安装到的d:\workstation\mysoftware\go\就是GOROOT
  2. 类似于JAVA_HOME
  3. GOROOT下的bin目录要加到环境变量,方便在任何路径执行其下命令;

GOPATH:(go1.11版本后,不强制要求gopath了,利用go module,可以将go源代码放在任何位置)

  1. 是将来存放写的go源代码的位置,需要自定义,

  2. 并在其下面创建3个子目录:pkg bin src,其中src是存放源代码的目录

  3. 创建GOPATH目录,以及3个子目录

    1. bin是自己代码编译后的二进制文件;
    2. pkg是编译后的归档文件;
    3. src是源码文件;

    image-20201224163548061

  4. 配置GOPATH到全局系统变量中;

    image-20201224163811859

  5. 将2个bin目录,配置到全局的系统变量PATH中;一个是go开发包的bin目录,包括一些编译工具等;一个是自己将来编译后的二进制程序,都需要配置到PATH中,方便执行命令时找到相应程序;

    image-20201224163920583

设置GOPROXY

默认的GOPROXY地址:GOPROXY=https://proxy.golang.org,direct ,国内的地址可以更换为goproxy.cn,goproxy.io


C:\Users\ten>go env -w GOPROXY=https://goproxy.cn,direct

查看go 环境变量

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
C:\Users\ten>go env
输入go env即可
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\ten\AppData\Local\go-build
set GOENV=C:\Users\ten\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows

set GOPATH=D:\workstation\mycode\gocode

set GOPRIVATE=

set GOPROXY=https://goproxy.cn,direct

set GOROOT=D:\workstation\mysoftware\go

set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\workstation\mysoftware\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ten\AppData\Local\Temp\go-build519974818=/tmp/go-build -gno-record-gcc-switches

go开发IDE

​ vscode加go插件,或jetbrains的Goland,这里采用vscode加相应插件;

安装vscode

https://code.visualstudio.com/Download

找到对应操作系统的安装包,这里是windows平台的,下一步安装法直接安装即可;

安装中文扩展

安装go扩展

​ 在扩展中,所在Chinese和go,安装扩展,然后重启vscode即可;

image-20201224174436479

第一个go程序

go的项目结构

​ go语言开发时:

  • 源代码保存在$GOPATH/src目录下;
  • go build编译、go install编译加移动、go get命令后;
  • go get下载的第三方源码包放在$GOPATH/src目录下;
  • 产生的二进制可执行文件在$GOPATH/bin目录下;
  • 生成的中间文件在$GOPATH/pkg目录下;

使用vcs如git管理项目时,只需要将$GOPATH/src目录下的源代码添加到git中管理即可;bin和pkg目录下不需要;

个人项目结构

大体的项目结构:

在src目录下,分项目,项目下分模块存放源代码;

image-20201224175455313

较为流行的项目结构:

​ go通过引用包,组织代码文件,通常使用公司或个人的顶级域名做代码包的前缀,防止冲突;没有个人域名可以用github.com用户名充当包前缀

image-20201224175541874

示例:

​ wang和li在github上有studygo的项目,那么其包路径分别是:

import "github.com/wang/studygo"

import "github.com/li/studygo"

下载github上的包

go get github.com/jmoiron/sqlx

下载的包会到GOPATH路径下的src的路径,
具体为:src/github.com/jmoiron/sqlx

image-20201224180316768

公司/组织项目结构

image-20201224175045705

文本编辑器写helloworld

  1. 进入到GOPATH路径的src目录下;

  2. 新建一个hello目录;

    image-20201224165825667

  3. 在hello目录新建一个main.go;

    image-20201224165911735

    1
    2
    3
    4
    5
    6
    7
    
    package main
       
    import "fmt"
       
    func main(){
     fmt.Println("hello world")
    }
    
  4. 在路径框中,输入cmd,然后回车,即在该路径下打开cmd窗口;

  5. go build编译刚刚的main.go程序,默认生成与文件夹同名的exe文件;

    image-20201224165949135

  6. -o选项指定编译后的exe文件名;

    image-20201224170111674

  7. 在非当前目录编译:(其他路径执行go build + 源码目录名,go会自动在GOPATH的src目录下,找到对应的源码目录名执行编译,编译后的exe文件在当前执行命令的路径)

    如下例子:会去src目录下找到hello目录,然后编译,生成的exe文件在当前d盘路径下;

    image-20201224170320708

vscode中写helloworld

切换vscode的默认终端

如图:打开一个终端,并在长方框选择cmd,然后重启vscode即可;

image-20201224170728414

go install作用

​ go install分为2步:

  1. 先编译为可执行文件;
  2. 然后将可执行文件移动到GOPATH的bin目录下;

因GOPATH下的bin在环境变量中,此后,可在任意路径下执行编译后的可执行文件;

image-20201224171314216

跨平台编译

​ 默认情况下:go build编译后的可执行文件都是当前开发机的操作系统可执行的文件,一般需要在windows平台开发,编译出在linux服务器上执行的可执行文件;

  1. 指定目标操作系统和处理器架构;

    D:\workstation\mycode\gocode\src\hello>set CGO_ENABLED=0
    # 禁用cgo,使用了cgo的代码,不支持跨平台编译;
    D:\workstation\mycode\gocode\src\hello>SET GOOS=linux
       
    D:\workstation\mycode\gocode\src\hello>SET GOARCH=amd64
    
  2. 编译即可

    D:\workstation\mycode\gocode\src\hello>go build
    
  3. 执行测试,成功;将编译后的二进制文件上传到linux系统中,加入执行权限;

    image-20201224173338760

跨平台编译示例:

  • mac下编译linux或windows的64位可执行程序;

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 
    go build
      
    CGO_ENABLED=0 GOOS=windows GOARCH=amd64
    go build
    
  • linux下编译mac或windows的64位可执行程序;

    CGO_ENABLED=0 GOOS=darwin GOARCH=amd64
    go build
      
    CGO_ENALBED=0 GOOS=windows GOARCH=amd64 
    go build
    
  • windows下编译mac的64位可执行程序;

    SET CGO_ENABLED=0
    SET GOOS=darwin
    SET GOARCH=amd64
    go build
    

vscode再配置

配置GOPROXY

​ 在vscode的cmd的终端中,输入一下命令,设置GOPROXY

go env -w GOPROXY=https://goproxy.cn,direct

安装go开发工具包

1、windows系统按ctrl shift p,弹出窗口,并在其中搜索:go:install/update tools一项;

image-20201224182417055

2、点击之后,在弹出的如下列表中,选中全部,点击确定,开始安装工具包;

image-20201224181947280

3、安装成功的提示:

image-20201224182317014

配置vscode自动保存

文件-》首选项-》设置,选中afterdelay

image-20201224182849217

配置vscode代码片段快捷键

windows系统按ctrl shift p,弹出创建输入snippets

image-20201224183356203

然后在弹出的列表中,选择go点击,弹出的go.json配置文件,按需将需要的快捷键定义其中,保存即可;

image-20201224184314207

image-20201224183422782

2个快捷键配置示例:

{
	// Place your snippets for go here. Each snippet is defined under a snippet name and has a prefix, body and 
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
	

	
		"println":{
			"prefix": "pln",
			"body":"fmt.Println($0)",
			"description": "println"
		},
		"printf":{
			"prefix": "plf",
			"body": "fmt.Printf(\"$0\")",
			"description": "printf"
		}
	
}

测试补全快捷键:

新建一个main.go文件,pln和plf会自动补全为完全的语句;

image-20201224183949033

image-20201224183959605

updatedupdated2020-12-282020-12-28
加载评论