zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

Golang 环境配置与应用编译

配置应用Golang 环境 编译
2023-09-27 14:25:56 时间

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


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


640.png

也从侧面说明了现在 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

640.jpg


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

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

640.jpg


应用编译


在 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

640.jpg意味着编译后会在 pkg 目录生成一个包。

接下来我们就可以引用这个包里面的方法啦 这和 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

640.jpg


在任意路径下 执行


myapp

640.png

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

640.jpg


拉取远程包


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


go get github.com/astaxie/beego

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

640.jpg

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

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


写在最后


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



Golang交叉编译(跨平台编译)的使用 存在交叉编译的情况时,cgo 工具是不可用的。在标准 go 命令的上下文环境中,交叉编译意味着程序构建环境的目标计算架构的标识与程序运行环境的目标计算架构的标识不同,或者程序构建环境的目标操作系统的标识与程序运行环境的目标操作系统的标识不同
未编译 Python 代码比 Go 慢 100 倍 我是编译型编程语言的忠实粉丝,一直都是。虽然解释型编程语言可以让开发者更快地编写和测试代码,但我仍然认为编译器是值得长期投入的。
老年人编译系列-go cmd/dist源码 dist是用来编译go语言的工具,而且dist本身是由go语言写的所以可以用低版本的go编译dist, 再用dist编译高版本的go/src/cmd/dist是go dist工具的代码目录main.go中的main为入口函数主要的流程为 检测操作系统 检测系统架构 bginit() //启...
老年人编程系列-go的编译顺序 根据官方文档https://golang.org/doc/install/source编译go源码需要$ cd src$ ./all.bash 拨拉开src/all.bash文件可以看到如下步骤 加载make.
后端进阶 微信公众号「后端进阶」作者,技术博客(https://objcoding.com/)博主,Seata Committer,GitHub ID:objcoding。