pkslow.com 南瓜慢说

  • AllArticles
  • Container
  • Spring
  • Life
  • Cloud
  • Collections
  • About
  • GitHub

  • Search
Terraform101 English Terraform Middleware config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac Plan Stream MongoDB Spring DevOps JVM String Map Set List Performance Email Springboot JavaCollections ArrayList Java

使用Go module和GoLand初始化一个Go项目

Created on: 2020-12-13 | Category: Others | 0 | View: 4011

1 简介

Golang是一门优秀的语言,特别是在并发编程上,得益于它的协程和channel等,非常方便易用。它通过go module来管理包和依赖,本文介绍如何利用它创建一个项目。

2 重要的环境变量

Go通过环境变量来做项目上的管理和控制,通过命令go env可以查看相关变量:

$ go env
GO111MODULE="on"
GOARCH="amd64"
GOHOSTOS="darwin"
GOMODCACHE="/Users/larry/go/pkg/mod"
GOPATH="/Users/larry/go"
GOPROXY="https://mirrors.aliyun.com/goproxy/"
GOROOT="/Users/larry/Software/go"
GOTOOLDIR="/Users/larry/Software/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"

关键环境变量:

GOROOT:Go的安装目录,即可执行文件所在的目录;

GOPATH:工作目录并不是项目所有目录,编译后的二进制文件存放地,import包的搜索路径,主要包含bin、pkg、src;

GO111MODULE:启用go module管理项目,需要有go.mod和go.sum文件;

GOPROXY:下载依赖时的代理,必须配置,不然无法成功下载;

常用的代理有:

# 1. 七牛 CDN
export GOPROXY=https://goproxy.cn,direct

# 2. 阿里云
export GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

# 3. 官方
export GOPROXY=https://goproxy.io,direct

个人用阿里云比较多。

3 初始化项目

用命令执行如下:

# 创建project的目录
$ mkdir pkslow_test
# 进入目录
$ cd pkslow_test/
# 初始化
$ go mod init pkslow.com/pkslow_test
go: creating new go.mod: module pkslow.com/pkslow_test

$ l
-rw-r--r--   1 larry  staff   39 Dec 13 21:07 go.mod
#查看文件内容
$ cat go.mod 
module pkslow.com/pkslow_test

go 1.15

新建文件main.go,开始写代码:

package main
import "fmt"
func main() {
    fmt.Println("hello pkslow")
}

执行或编译后执行:

# 直接run
$ go run main.go 
hello pkslow

# 编译成二进制文件
$ go build
t$ l
-rw-r--r--   1 larry  staff       39 Dec 13 21:07 go.mod
-rw-r--r--   1 larry  staff       74 Dec 13 21:12 main.go
-rwxr-xr-x   1 larry  staff  2146904 Dec 13 21:12 pkslow_test
# 执行二进制文件
$ ./pkslow_test 
hello pkslow

4 引入本地包

创建目录与文件结构如下:

$ tree
├── go.mod
├── main.go
└── mylog
    └── pkslow_log.go

新建pkslow_log.go的内容如下:

package mylog
import "fmt"

func PkslowLog(str string) {
    fmt.Println(str)
}

修改后的main.go的内容如下:

package main
import (
	"fmt"
	"pkslow.com/pkslow_test/mylog"
)

func main() {
    fmt.Println("hello pkslow")
    mylog.PkslowLog("www.pkslow.com")
}

执行如下:

$ go run main.go 
hello pkslow
www.pkslow.com

5 GoLand打开项目

以上已经基本完成了项目的创建,但使用IDE写代码会更高效率,直接使用GoLand打开项目即可。一些关键配置如下:

GOROOT:

GOPATH:

Go Module:

最终项目整体结构如下:

6 总结

Go语言还是挺有意思的,值得一试。


Code for all: GitHub

欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

file

Recommendations:
Cloud Native
Terraform
Container: Docker/Kubernetes
Spring Boot / Spring Cloud
Https
如何制定切实可行的计划并好好执行

  • Author 作者: LarryDpk 南瓜慢说
  • Link 链接: https://www.pkslow.com/archives/go-create-project
  • 版权声明: 本博客所有文章除特别声明外,不可转载!
# Terraform101 # English # Terraform # Middleware # config # Go # Private # Kubernetes # pkslow # Test # HTTPS # Redis # Docker # Mac # Plan # Stream # MongoDB # Spring # DevOps # JVM # String # Map # Set # List # Performance # Email # Springboot # JavaCollections # ArrayList # Java
Terraform101 English Terraform Middleware config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac Plan Stream MongoDB Spring DevOps JVM String Map Set List Performance Email Springboot JavaCollections ArrayList Java
Kubectl设置默认命令空间namespace
南瓜慢说文章汇总
  • Contents
  • Site Overview
南瓜慢说

南瓜慢说

多年Java开发,主要专注后端技术:Java/Spring/Springboot/微服务/大数据等。

多读书,多分享;多写作,多整理。

241 Posts
9 Categories
30 Tags
RSS
0%
© 2020 — 2022 南瓜慢说 pkslow The WebSite keeping alive:   粤ICP备20036375号