Go - 从零开发第一个Golang项目

红薯爱帅 · · 1029 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go语言编程之旅:一起用Go做项目

1. 概述

Go语言特性请参考我的上一篇文章,本文不再赘述啦:
https://www.jianshu.com/p/2f56e491172d

本文重点介绍Go语言开发环境的安装流程,以及第一个Golang项目的开发流程(来自上面那本书)。

2. Go开发环境安装

Windows10

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
$ go env -w GOPATH=D:\golang

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

完善代码

补充说明

  • 增加了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、高并发等场景的应用。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:红薯爱帅

查看原文:Go - 从零开发第一个Golang项目

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1029 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传