转载

Golang 环境配置与应用编译

Go 语言现在是越来越火了,出现在各个领域中,称它为 21 世纪的 C 语言一点都不为过,而且 Go 语言是 2009 年才发布的新语言,可以说它的特性是完全基于现代计算机来设计的,尤其是它的看家本领 goroutine 协程,在高并发场景下使用简直不要太爽,非常适合写一些高性能中间件。

而作为 Java 后端开发者的我,早在 2017 年底的时候已经通过业余时间掌握了 Go 语言,并且还手写了一个微信支付 SDK 作为练手的开源项目,出乎意料地广受 GayHub 网友的欢迎,目前将近 200 star,是目前最受欢迎的 Go 语言版微信支付 SDK 之一:

Golang 环境配置与应用编译

也从侧面说明了现在 Go 语言生态还不是很成熟,但这也是一种潜力,并且我相信,Go 语言是会未来一大热门语言,因此 Go 语言可以说是后端开发者最好的第二技能选择之一。

它自带的命令诸如 go run、go build、go install 等,就可以编译运行 Go 应用了,这在 Java 中,想要更快速方便地进行编译,我们还需要依赖一些第三方工具,如 maven 编译工具,Go 的这些命令就相当于一个 Maven 了,甚至比 maven 简单多了,而且还是原生支持。

这篇文章主要是说一下 Go 的工作目录与编译的规则,初步体验一下 Go 的大道至简的魅力。

GOPATH

GOPATH 是 Go 命令依赖的一个路径,也是 Go 项目放置的地方,在类 unix 系统下设置 GOPATH:

export GOPATH=/Users/zhangchenghui/.go

查看 Go 环境变量:

go env

Golang 环境配置与应用编译

$GOPATH 目录有三个约定俗成的目录,一定要彻底理解:

src:存放源代码,也是 Go 项目源代码的存放地址; pkg:编译后的生成的包,也就是 Go 的 .a 文件,这个后缀名的文件代表的是 Go  的一个包; bin:编译后生成的可执行文件( 只有导入 package main 包的文件编译后直接是可执行文件  )。

Golang 环境配置与应用编译

应用编译

在 GOPATH 的 src 创建一个项目:


 

cd $GOPATH/src

mkdir mypakage

cd mypakage

新建 test.go:


 

// $GOPATH/src/mypakage/test.go

package mypakage


import "fmt"


func Test() {

fmt.Println("test~~~~~")

}

Go 语言有个约定俗成的做法就是函数首字母大写相当于 Java 的 public 方法,小写相当于 Java 的 private 方法。

在该项目目录中执行 go install 或者在任意目录下执行 go install mypakage,请注意该文件的包 package mypakage,意味着编译后会在 pkg 目录生成一个包。

Golang 环境配置与应用编译

接下来我们就可以引用这个包里面的方法啦,这和 maven 的 mvn clean install 一个道理。

在 src 目录中新建一个应用:


 

cd $GOPATH/src

mkdir myapp

cd myapp

新建 main.go:


 

// $GOPATH/src/myapp/main.go

package main


import (

"fmt"

"mypakage"

)


func main() {

mypakage.Test()

fmt.Println("hello, go")

}

接下来就是要编译这个应用了,进入该应用目录,执行 go install, 由于该应用直接导入的是 pakage main 包,它是 Go 语言中唯一一个可以编译后直接生成可执行文件的包 ,因此会在 $GOPATH/bin 下生成一个可执行文件 myapp:

Golang 环境配置与应用编译

在任意路径下,执行:

myapp

输出如下内容:

Golang 环境配置与应用编译

其实在该应用目录下也可执行 go build 命令进行编译,会在当前目录下生成可执行文件,而不会安装在 bin 目录下。

Golang 环境配置与应用编译

拉取远程包

Go 语言要如何获取远程包呢?在 Java 开发中,我们我可以通过 Maven 自动地从 Maven 中央仓库中下载依赖到.m2本底仓库中,但是在 Go 开发中,我们只需要使用 go get 指令就可以从远程拉取依赖包了:

go get github.com/astaxie/beego

这条命令就会将源码下载到 src 目录中,并将源码编译后安装到 pkg 目录中:

Golang 环境配置与应用编译

因此,go get 相当于 git clone 源码下来,再执行 go install。

这里特别说明一下,go 1.11 已经发布了 go modules 作为官方的版本依赖管理工具,而我开源的 微信支付 SDK 「wxpay」已经支持了该特性, 后面也会单独跟大家讲解一下 go modules。

写在最后

如果你们也喜欢 Go 语言,可以给我留言,一起讨论学习,我会考虑在后续更新一系列关于 Go 语言的文章,与大家共同培养第二技能。

推荐阅读:

由for update引发的血案

实战|如何自定义SpringBoot Starter?

Java并发之AQS源码分析(二)

Java并发之AQS源码分析(一)

Golang 环境配置与应用编译

长按可以订阅

点个在看

让我知道有多少人想学 Go

Golang 环境配置与应用编译

原文  http://mp.weixin.qq.com/s?__biz=MzU3MjQ1ODcwNQ==&mid=2247483897&idx=1&sn=98dac43a26fd5d3be21077c4b203a3e8
正文到此结束
Loading...