一、前言
很多人将GO语言称为21世纪的C语言,因为GO不仅拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东西。语言层出不穷,出于对go语言的好奇,打算学习一下go语言。这篇博文主要是记录一些go语言的知识点,前期可能会不成体系,权当是学习笔记了。
本博客主要记录的是linux服务器下的安装部署,如果想看windows下的安装部署+eclipse插件配置参见:eclipse安装go插件
二、go环境安装
注明:我的服务器环境 :Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-131-generic x86_64)
1、从官网下载Go语言安装包:https://studygolang.com/dl
wget https://studygolang.com/dl/golang/go1.12.9.linux-amd64.tar.gz
2、解压安装包到指定目录
sudo tar -zxvf go1.10.linux-386.tar.gz -C /opt
3、配置环境变量
安装后go之后,要配置几个环境变量,如下:
GOPATH:go的开发路径(自选)
GOROOT:go的安装路径
vi /etc/profile
#添加下边的环境
export GOROOT=/home/wamdm/go
export GOPATH=/home/wamdm/tangqing/go
export PATH=$PATH:$GOROOT/bin:/$GOPATH/bin
4、使环境变量生效:
source ~/.bashrc
5、查看环境变量是否生效:
go env
6、接着在开发目录创建文件夹,如下
cd /home/wamdm/tangqing/go
mkdir bin
mkdir src
mkdir pkg
bin是生产目录,src是开发目录,pkg是包目录
ok,完成,之后构建go项目放在src下面, 生成的安装包会自动放在bin下,生成过程中的中间文件会放在pkg下面。
6、编写hello.go文件,测试安装是否成功
package main
import "fmt"
func main(){
fmt.Println("hello,world!")
}
7、用go run命令直接运行hello.go
go run hello.go
8、用go build命令生成hello可执行文件
go build hello.go
三、项目部署
方法一:服务器上去编译
1,把服务器上配置成本地一样的环境
2,包括项目里面所依赖的包
3,项目源码拷贝到与服务器,服务器上编译
go build main.go
编译后会在同级目录生成可执行文件
main
最后执行 ./main 就行了。
如果想让项目在后台执行:执行 nohup ./main & ,这样就可以程序在后台运行了
注意:发现如果按照官方给的安装方法只指定GOROOT的路径,于是自己新建一个目录gopath 作为GOPATH 的目录,并且设置环境变量(export GOPATH=/newhome/go/gopath)。在gopath下新建3个文件夹(模仿windows GOPATH的方式,也是go语言的工作环境目录)分别为 src、pkg、bin目录
方法二:本地编译
cmd控制台到main.go文件目录下
set GOARCH=amd64
set GOOS=linux
go build main.go
会生成一个没有后缀的二进制文件
main
将该文件放入linux系统某个文件夹下
赋予权限
chmod 777 main
最后执行 ./main 就行了。
如果想让项目在后台执行:执行 nohup ./main & ,这样就可以程序在后台运行了
四、go命令和常用工具
go install:编译并把编译好的结果移到$GOPATH/pkg或者$GOPATH/bin
go build :编译(项目和文件)
常用参数:
-o 指定输出的文件名,可以带上路径,例如 go build -o out main.go
-i 安装相应的包,编译+go install
-v 打印出来我们正在编译的包名
go get:安装第三方包
常用命令:
-d 只下载不安装
-u 强制使用网络去更新包和它的依赖包
-v 显示执行的命令
go clean:移除当前源码包和关联源码包里面编译生成的文件
go fmt:格式化代码
godoc:文档
godoc -http=:端口号 比如godoc -http=:8080然后打开127.0.0.1:8080可以在浏览器中查询pkg文档
godoc net/http:查看http包的文档
godoc -src fmt Printf:查看fmt.Printf的代码
go run 编译并运行Go程序