1. 概述
Go语言特性请参考我的上一篇文章,本文不再赘述啦:
https://www.jianshu.com/p/2f56e491172d
本文重点介绍Go语言开发环境的安装流程,以及第一个Golang项目的开发流程(来自上面那本书)。
2. Go开发环境安装
Windows10
install git and golang in win10
https://golangdocs.com/install-go-windowsset envs
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
$ go env -w GOPATH=D:\golang
- IDE,推荐Jetbrains的Goland
https://www.jetbrains.com/go/
https://blog.jetbrains.com/go/2019/01/22/working-with-go-modules/
Ubuntu20.04
- 下载最新版本1.16.2,并配置env
$ wget -c https://dl.google.com/go/go1.16.2.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
$ sed -i '$a\export PATH=$PATH:/usr/local/go/bin' ~/.profile
$ sed -i '$a\export GO111MODULE=on' ~/.profile
$ sed -i '$a\export GOPROXY=https://goproxy.cn,direct' ~/.profile
$ source ~/.profile
$ go version
go version go1.16.2 linux/amd64
3. 从零创建一个Golang项目
初始化项目,其中tour
目录位置随意
$ mkdir tour && cd tour
$ go mod init test.com/shuzhang/tour // will create go.mod file
$ go get -u github.com/spf13/cobra // will create go.sum file
完善项目目录结构
$ touch main.go
$ mkdir -p cmd internal
$ tree tour
├── main.go
├── go.mod
├── go.sum
├── cmd
└── internal
完善代码
- 代码:repo,也可以直接clone,也可以参考go-programming-tour-book
- 介绍:参考《Go 语言编程之旅:一起用 Go 做项目》
补充说明
- 增加了makefile,汇总了一些常用的go命令
BINARY_NAME=tour
all: test install
#compile:
# echo "Compiling for every OS and Platform"
# GOOS=freebsd GOARCH=386 go build -o bin/main-freebsd-386 main.go
# GOOS=linux GOARCH=386 go build -o bin/main-linux-386 main.go
# GOOS=windows GOARCH=386 go build -o bin/main-windows-386 main.go
build:
go build -o ${BINARY_NAME} main.go
test:
go test -v main.go
run: build
./${BINARY_NAME}
install: build
cp ./${BINARY_NAME} ${GOPATH}/bin
deps:
go mod download
clean:
go clean
rm ${BINARY_NAME} ${GOPATH}/bin
- 增加了dockerfile,支持容器化部署
FROM golang:1.16.2
LABEL maintainer="zspishere@163.com"
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
# ENV GOMAXPROCS=8
RUN mkdir /code
WORKDIR /code
COPY . /code/
RUN cd /code && make all
ENTRYPOINT ["tour"]
CMD ["time", "now"]
- 启动测试
$ docker build -t golang/tour .
$ docker run golang/tour -h
2021/03/16 15:36:11 maxprocs: Leaving GOMAXPROCS=8: CPU quota undefined
2021/03/16 15:36:11 let us begin ...
Usage:
[command]
Available Commands:
help Help about any command
json json转换和处理
sql sql转换和处理
time 时间格式处理
word 单词格式转换
Flags:
-h, --help help for this command
Use " [command] --help" for more information about a command.
$ docker run golang/tour time now
2021/03/16 15:36:05 maxprocs: Leaving GOMAXPROCS=8: CPU quota undefined
2021/03/16 15:36:05 let us begin ...
2021/03/16 15:36:05 输出结果: 2021-03-16 23:36:05, 1615908965
4. 下一步计划
主流的静态语言并不多,诸如C/C++、Java、C#、Go等,其中,Go凭借其自身优势,既利于项目开发迭代,又不失程序执行效率,逐渐被大厂认可。
然而,Go的坑也很多,同时语言本身也在不断升级。路漫漫其修远兮,吾将上下而求索!下一步,将继续深入学习Web、高并发等场景的应用。
有疑问加站长微信联系(非本文作者)