Golang初体验

Golang环境搭建

Go官网在国内被墙了,不过在baidu上找到了替代方案:
https://golang.google.cn/

下载安装包,安装好之后,Window环境,默认安装在C:\Go目录下,在环境变量里还自动为你配置了GOPATH,GOPATH指向了你的工作目录,C:\Users\用户名\go

在GOPATH目录下创建三个目录,分别用来存放 源代码、可执行文件、编译后的包文件,srcbinpkg
image.png

go的msi包在安装时自动配置了go的命令路径、不需要再手动配置了,打开cmd,运行go version
image.png
一切安好

开发工具配置

推荐安装VSCode,当然Goland也可以啦
在插件上搜索go,安装该插件
image.png
打开go文件,vscode会检测到你编辑的是go文件,会自动提示你安装一些工具
image.png
点击Install All安装所有工具,但是因为墙的原因,很可能会导致安装失败

如果是go1.13及以后的版本执行指令:
go env -w GOPROXY=https://goproxy.cn,direct
这里就能顺利安装了,在vscode中按ctrl+shift+p,输入go:install,弹出以下框,选中Go:Install/Update Tools
image.png
然后选中所有工具
image.png
可以看到顺利安装
image.png
可以在bin目录下看到已安装的工具
image.png
vscode多出了代码提示功能
image.png

第一个Go程序

打开GOPATH下的src目录,这里就是我们的开发环境啦
按照惯例,写一个helloworld庆祝一下

package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}
  • go build
    在命令行下运行go build HelloWorld.go,可以看到当前目录生成了一个HelloWorld.exe文件,在命令行运行打印Hello,world

  • go run
    当然也可以通过go run HelloWorld.go直接运行go文件,不生成exe文件

  • go install
    还可以使用go install命令将程序打包到%GOPATH%\bin目录,就是先编译成exe,然后move到bin目录下而已。
    注意这里直接go install HelloWorld.go会失败,提示以下错误
    no install location for .go files listed on command line (GOBIN not set)
    因为go install的对象是一个包,而不是单个文件,这里创建一个hello目录,将HelloWorld.go放到hello目录下,然后执行go install hello,%GOPATH%\bin目录就多出来一个hello.exe文件了
    image.png

跨平台编译

目的是在window上可以编译出linux上能运行的程序,也可以在linux上编译出window上能跑的程序

window上编译linux程序,注意SET命令是cmd下的,不是powershell的

SET CGO_ENABLED=0	# 禁用CGO
SET GOOS=linux		# 编译linux平台程序
SET GOARCH=amd64	# 目标处理器amd64架构

window编译mac64位

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

mac编译linux和window平台64位

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

linux编译mac和window平台64位

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

如何想回到自己的编译平台,不用慌,直接关掉shell窗口再重新打开执行go build就行了


VSCode Go提示巨慢解决

一开始用VSCode写代码提示慢的差点弃坑,最后在Preferencs->Setting,搜索go.useLanguageServer,勾选
image.png
重启Vscode,解决

# Golang 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×