软件安装

安装包下载地址为:https://golang.org/dl/

如果打不开可以:

https://golang.google.cn/dl/

https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz

wget https://dl.google.com/go/go1.10.3.src.tar.gz #源码包
wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz #运行包

新版(2020-04-04)
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz

新版(2020-05-24)

wget https://dl.google.com/go/go1.14.3.linux-amd64.tar.gz

tar -zxvf go1.10.3.linux-amd64.tar.gz
mv go /usr/local/

环境变量设置
GO语言有软件工程或项目的思想,
创建项目目录
mkdir -p goapp/{src,bin,pkg}
设置项目环境变量,GOROOT为go安装目录,GOPATH为项目所在目录

vim /etc/profile
export GOROOT=/usr/local/go
export GOPATH=/usr/local/automng/src/goapp
export PATH=$PATH:$GOROOT/bin

source /etc/profile
which go
/usr/local/go/bin/go

GOPATH允许有多个路径,以冒号分隔即可;第一个目录并不完全与后面的等价,在使用go get 下载go项目时,只会写入到GOPATH的第一分区

GO 包引用
一个项目通常只有一个入口,即一个main

mkdir -p src/{main,ch01,ch02}
mkdir src/ch02/ch0201 $ cat src/ch01/a.go
package ch01
var a = "鱼只有七分钟的记忆吗?"
var b uint16=
var c bool = true //供外部调用的方法一定要以大写字母开头
func Show(){
println(a,b,c)
} $ cat src/ch02/b.go
package ch02 var a int =
var b = func Show(){
//该声明方式必须写在方法内部
c :=
println(a,b,c)
} $ cat src/ch02/ch0201/bb.go
package ch0201
import "fmt" func Show() {
const LENGTH int =
const WIDTH int =
var area int
const a, b, c = , false, "str" //多重赋值 area = LENGTH * WIDTH
fmt.Printf("面积为 : %d", area)
println()
println(a, b, c)
} $ cat src/main/main.go
package main import (
"ch01"
"ch02"
"ch02/ch0201"
) func main(){
ch01.Show()
ch02.Show()
ch0201.Show()
}

GO语言的执行
可以使用 go run aa.go的运行脚本
$ go run src/main/main.go
鱼只有七分钟的记忆吗? 65534 true
10 10 10
面积为 : 50
1 false str

编译GO脚本为可执行文件
将以上程序打包编译为一个可执行文件,前提是要设置GOPATH目录,go build会自动去$GOPATH/src目录下寻找相关目录,一个脚本中只能有一个package main包,即只有一个入口

以下这个命令可以在系统的任何目录下执行,go会自动去$GOPATH/src目录下找main目录
$ go build -o testgo main
$ ll
total 1976
-rwxrwxr-x 1 tanpengfei tanpengfei 2020337 Sep 28 10:44 testgo
$ ./testgo
鱼只有七分钟的记忆吗? 65534 true
10 10 10
面积为 : 50
1 false str

当然了,一个main目录可以有多个main包的文件,程序本身不会报错,但你就不无法在该目录下使用go build了,只能使用go run aa.go,所以建议一个包下只有一个main入口

go build的目录

go build -o execname main 中的main是一个目录,可以修改为其他目录,比如build,但这个目录是GOPATH变量中的第一个分支下的目录,比如下面的变量定义

export GOPATH=/opt/code/gopath:/disk/git/goapp/goapp:$GOPATH

那么执行go build -o execname build 表示将/opt/code/gopath/src/build目录的程序打包为execname可执行文件

因此go build -o execname build这条命令可在系统上的任意位置执行

补充说明

使用IDE创建go项目时,会自动创建三个目录:src,bin,pkg
进入一个包含main方法的目录,执行 go install ,会在pkg下生成以一个以.a为后缀的文件(对我们没用,当文件存在时不会重复生成而是直接使用),然后在bin目录下生成一个可执行文件
进入一个包含main方法的目录,执行 go build,每次都会重新拉取所有涉及到的代码编辑并生成可执行文件

重点总结

GOPATH的作用:程序的运行、编译都是以GOPATH为基础的

最新文章

  1. win10下 解决系统进程占用80端口
  2. [LintCode] Integer to Roman 整数转化成罗马数字
  3. SSO之CAS总结
  4. android ping网络是否成功
  5. php 随机显示图片的函数(实例)
  6. HTTP Header 入门详解
  7. lib 合并
  8. 18款 非常实用 jquery幻灯片图片切换
  9. 获取SqlServer当前链接数
  10. 关于linux系统下的uname -a命令
  11. ant-学习记录二
  12. [Open Source] RabbitMQ 高可用集群方案
  13. QUICK-AP + BETTERCAP 搭建热点, 欺骗局域网内用户下载任意可执行文件
  14. selenium 定位input输入框下的选择项
  15. OpenVDB for Mitsuba
  16. Python网络爬虫实战:根据天猫胸罩销售数据分析中国女性胸部大小分布
  17. linux 下mysql服务的管理
  18. py-day2-6 python format字符串格式化
  19. Dubbo入门---搭建一个最简单的Demo框架
  20. 对仿真glbl.v文件的理解

热门文章

  1. GUI编程02
  2. 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-001选择排序法(Selection sort)
  3. java IO的总结
  4. 分享常用的GoLang包工具
  5. HUST高级软件工程--测试管理工具实践--Day3
  6. java全栈day12----final static 匿名对象 内部类 包的声明与访问
  7. 多线程学习-基础(四)常用函数说明:sleep-join-yield
  8. 微信小程序小结(4) -- 分包加载及小程序间跳转
  9. idea 面板介绍
  10. UVa_Live 3664(精度坑)