Golang 环境配置与应用编译
微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。
老司机倾囊相授,带你一路进阶,来不及解释了快上车!
Go 语言现在是越来越火了,出现在各个领域中,称它为21世纪的 C 语言一点都不为过,而且 Go 语言是 2009 年才发布的新语言,可以说它的特性是完全基于现代计算机来设计的,尤其它的看家本领 goroutine 协程,在高并发场景下使用简直不要太爽,非常适合写一些高性能中间件。
现在互联网发展得很快,我们也需要在空余时间培养第二技能,不然很快就会被互联网的发展潮流淘汰。而作为 Java 后端开发的我,早在 2017 年底的时候已经通过业余时间掌握了 Go 语言,并且还手写了一个微信支付 SDK 作为练手的开源项目,出乎意料地广受 GayHub 网友的欢迎,目前将近 200 star,是目前最受欢迎的 Go 语言版微信支付 SDK 之一:
也从侧面说明了现在 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
$GOPATH 目录有三个约定俗成的目录,一定要彻底理解:
- src:存放源代码,也是 Go 项目源代码的存放地址;
- pkg:编译后的生成的包,也就是 Go 的 .a 文件,这个后缀名的文件代表的是 Go 的一个包;
- bin:编译后生成的可执行文件(只有导入 package main 包的文件编译后直接是可执行文件 )。
应用编译
在 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 目录生成一个包。
接下来我们就可以引用这个包里面的方法啦,这和 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:
在任意路径下,执行:
myapp
输出如下内容:
其实在该应用目录下也可执行 go build 命令进行编译,会在当前目录下生成可执行文件,而不会安装在 bin 目录下。
拉取远程包
Go 语言要如何获取远程包呢?在 Java 开发中,我们我可以通过 maven 自动地从 maven 中央仓库中下载依赖到.m2本底仓库中,但是在 Go 开发中,我们只需要使用 go get 指令就可以从远程拉取依赖包了:
go get github.com/astaxie/beego
这条命令就会将源码下载到 src 目录中,并将源码编译后安装到 pkg 目录中:
因此,go get 相当于 git clone 源码下来,再执行 go install。
这里特别说明一下,go 1.12 已经发布了 go modules 作为官方的版本依赖管理工具,而我开源的微信支付 SDK 「wxpay」已经支持了该特性,后面也会单独跟大家讲解一下 go modules。
写在最后
如果你们也喜欢 Go 语言,可以给我留言,一起讨论学习,我会考虑在后续更新一系列关于 Go 语言的文章,与大家共同培养第二技能。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MySQL知识体系——索引
本文直切主题,针对InnoDB引擎描述索引及优化策略。在开始之前,需要读者了解:1)二叉查找树(包括2-3查找树、红黑树等数据结构)2)MySQL的InnoDB引擎基础知识 索引初探 要了解索引,当然要了解其数据结构。树有很多应用,流行的用法之一是包括UNIX和DOS在内的许多常用操作系统中的目录结构,二叉查找树又是Java中两种集合类TreeSet和TreeMap实现的基础。那么对于数据库,I/O是其性能瓶颈所在,减少树的深度是直接有效的,BTree和B+Tree应运而生。 BTree和B+Tree(Balance-Tree,多路搜索树,非二叉) BTree BTree是一种查找树,如同二叉查找树,红黑树等,都是为提高查找效率而产生的,BTree也是如此,可以把它看做二叉查找树的优化升级。二叉查找树的特点是每个非叶节点都最多只有两个子节点,但是当数据量非常大时,二叉查找树的深度过深,搜索算法自根节点向下搜索时,需要访问的节点也就变的相当多。如果这些节点存储在外存储器(磁盘)中,每访问一个节点,相当于就是进行了一次I/O操作,随着树高度的增加,频繁的I/O操作一定会降低查询的效率。...
- 下一篇
Hyperledger Fabric和VSCode的IBM区块链扩展开发智能合约
了解使用IBM Blockchain Platform的VSCode扩展来简化开发,测试和部署智能合约的过程。完成本教程后,你将了解如何使用VSCode在本地Hyperledger Fabric网络上快速开发,演示和部署区块链应用程序。本教程假设你对Hyperledger Fabric有一些基本的了解。 学习目标 安装IBM Blockchain Platform VSCode扩展。 创建一个新的JavaScript智能合约。 打包智能合约。 创建,探索和了解Hyperledger Fabric网络。 在本地Hyperledger Fabric实例上部署智能合约。 使用Node.js SDK与已部署的智能合约包进行交互。 先决条件 你需要安装以下内容才能使用扩展程序: node v8.x或更高版本以及npm v5.x或更高版本。 Yeoman(yo) v2.x。 Docker版本v17.06.2-ce或更高版本。 Docker Compose v1.14.0或更高版本。 VSCode 1.28.2或更高版本。 如果你使用的是Windows,则还必须确保以下内容: 你的Windows版本...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 2048小游戏-低调大师作品