Hello Go 从0开始搭建go环境

背景介绍

自我介绍

笔者先做自我介绍,从事java开发5年。

近期公司要求开始技术转型,各种语言如java、php都逐渐在新项目上开始使用go语言进行编写。身为一个java的coder,心里当然想的是:java是世界上最优秀的语言。但是耐不住共军有高达啊,只能让自己的学习细胞在而立之年继续爆肝了。

首先要了解一下

Go的背景

Go 语言是由 Google 出品的的一门通用型计算机编程语言。种种亮点以及快速崛起的编程语言吸引着广大编程爱好者,近年来受到热捧 Go 已经成功跻身主流编程语言的行列。许多大厂也都已经拥抱 Go 语言,包括阿里巴巴、小米、滴滴、今日头条、奇虎360、京东、Bilibili、知乎、美图、猎豹移动等。

Go 程序可以装在有 Windows、Linux、FreeBSD等操作系统的服务器上运行,并用于提供基础软件支撑、API 服务、WEB 服务、网页服务等。Go 语言也在移动端上进行了积极的探索,现在在 Android 和 iOS 上都可以运行其程序。另外,Go 语言也已经和 WebAssembly 联合,加入了 WASM 平台。这意味着过不了多久,互联网浏览器也可以运行 Go 编写的程序了。

从业务维度看,在云计算、微服务、大数据、区块链、物联网等领域,Go 语言早已蓬勃发展。有的使用率已经非常之高,有的已有一席之地。即使是在 Python 为王的数据科学和人工智能领域,Go 语言也在缓慢渗透,并初露头角。 

好家伙,大家都开始拥抱变化(内卷)了,那我们也不能落下。

直接步入正题

搭建环境

go安装包

首先声明一下自己使用的是macbook非M1版本,仅供大家参考,以下的内容都是基于mac环境进行实操。

go的官网:golang.org(需要科学上网),被墙了,对这个操作,我只想说:墙的不错,下次不要这么墙了。

但是呢这肯定难不倒我们这些老兵。除了梯子以外,可以使用国内网站:

go语言中文网:首页 - Go语言中文网 - Golang中文社区

进入网站-下载,选择pkg安装包进行下载,我使用的是1.15.5版本,如有需要可以下载更新的版本;下载完成后一键傻瓜式安装。

安装完成后打开命令行,执行:go version

即可查看go当前版本啦

$ go version
go version go1.15.5 darwin/amd64

环境变量

玩java的都知道环境变量里有个javahome,其实go语言也不例外

在命令行执行:go env

$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/didi/Library/Caches/go-build"
GOENV="/Users/didi/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/didi/work/pkg/mod"
GONOPROXY="git.xiaojukeji.com"
GONOSUMDB="git.xiaojukeji.com"
GOOS="darwin"
GOPATH="/Users/didi/work"
GOPRIVATE="git.xiaojukeji.com"
GOPROXY="https://goproxy.io"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/kk/scjczfqx22n3fxj0pwj4gkrc0000gn/T/go-build133125836=/tmp/go-build -gno-record-gcc-switches -fno-common"

大家可能会看到非常多的环境变量配置,目前来看,我们并不需要做什么改变,先让我们的go工程跑起来再说。对于go环境变量每个的作用,可以后面单独拿一集出来交流。

目前可以只记以下内容

GOPATH: 你编写代码存放的目录
GOROOT: go安装的路径

cd 进入到自己的GOROOT目录下,创建3个文件夹bin pkg src
其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项目源文件。
一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可。

如果出现GOPATH路径找不到的情况,可以手动把GOPATH目录配置到环境变量中

export GOPATH="/Users/aaa/go"

至此基本准备工作就全部完成了。

开发工具

开发java的同学一般使用idea,eclipse,vscode,sublime等等

go语言的开发,在这里我推荐使用goland或vscode

goland不必多说,付费软件的优势毕竟还是在这点,功能齐全,扩展性也好;

vscode免费,但是插件的安装较为麻烦,不少go插件无法自动安装,需逐一下载包;

笔者在这里使用的是goland,让我们一起来搭建第一个hello world吧!

Hello Go!

新建一个目录:

1-firstGolang

再新建一个文件hello.go

.
├── firstGolang
└── hello.go

再按此格式编写一个go程序,建议第一次编写尽量纯手敲代码,感受一下go语言的语法。

package main //主程序所在的包名

import (
	"fmt"
	"time"
)

func main() { //函数的左括号{一定要和函数名在同一行,否则编译会错误
	//golang中的表达式,加不加;都可以,建议是不加
	fmt.Println("hello world Go!") //每行语句可以没有分号,但是有分号也可以
	time.Sleep(1 * time.Second)
	fmt.Println("hello world Go after 1 second!") //每行语句可以没有分号,但是有分号也可以

}

我们来逐行分析一下。

首先第一行package,这里package指的是所在的包名,这里和java的包有点相似,同一个包下的变量、函数也是可以互相调用的。

下面是import,这里导入和java的写法不同,java的写法往往是具体的类全名,比如java.util.Map,但是在go中,import导入时不需要写全名。这种写法更像是js中的导入写法,如react框架ant-design使用时导入Card一样。

func main是main函数,这个和java很像

  1. go语言以包作为管理单位
  2. 每个文件必须先声明包
  3. 程序必须有一个main包(重要),没有程序无法编译
  4. 每个import的函数必须被调用
  5. ……

需要注意的事项很多,其中第4点和java有很大的不同,java中如果import了一个类,并没有使用不会编译报错,而在go中会强制要求使用或者剔除。

运行

可以用goland编译器上带的箭头来启动

也可使用命令行启动,在.go文件所在目录执行go run hello.go

$ go run hello.go 
hello world Go!
hello world Go after 1 second!

 也能看到结果

到此,我们的第一个go程序就运行成功啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值