软件安装

安装包下载地址为: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.1 Go安装与项目结构初始化的更多相关文章

  1. Ionic3学习笔记(一)安装、项目结构与常用命令

    本文为原创文章,转载请标明出处 目录 安装 项目结构 常用命令 1. 安装 安装Cordova.Ionic npm install -g cordova ionic 创建一个新项目,有blank.ta ...

  2. Scrapy学习(二)、安装及项目结构

    一.安装 1.安装pywin32,下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/ 我选择的是Build 221,点进去,根据自 ...

  3. 第五篇 scrapy安装及目录结构,启动spider项目

    实际上安装scrapy框架时,需要安装很多依赖包,因此建议用pip安装,这里我就直接使用pycharm的安装功能直接搜索scrapy安装好了. 然后进入虚拟环境创建一个scrapy工程: (third ...

  4. linux go环境安装和基本项目结构

    最近项目中要用到Go语言,所以简单总结一下安装和配置,Go这个语言本身就限定了很多规范,比如项目设置,编程风格等,开发中就不需要再因为各种规范问题纠结了,直接用官方规定的能避免很多坑,下面直接切正题, ...

  5. Angular4.x 安装|创建项目|目录结构|创建组件

    Angular4.x 安装|创建项目|目录结构|创建组件 安装最新版本的 nodejs node.js 官网:https://nodejs.org/zh-cn/ 去官网下载 node.js,下一步下一 ...

  6. Maven01 环境准备、maven项目结构、编译/测试/打包/清除、安装、

    0 前提准备 0.1 安装java开发环境 0.2 安装maven工具 1 maven项目基本结构 如图所示,整个maven项目有业务文件.测试文件.POM依赖管理文件:其实还有一个资源文件resou ...

  7. Webpack探索【2】--- 安装、项目初始化、webpack.config.js配置文件

    本文主要讲安装.项目初始化.webpack.config.js配置文件方面的内容.

  8. Ionic学习记录(一):ionic及cordova安装、创建第一个应用、项目结构

    目录: 一.ionic的安装 二.创建第一个应用程序 三.浏览器中预览应用 四.项目结构 五.添加页面 一.ionic的安装 使用Ionic创建和开发应用程序主要通过Ionic命令行实用程序(“CLI ...

  9. day1(初始化项目结构)

    1.初始化项目结构  └─shiyanlou_project    │  .gitignore    │  README.en.md           # 英文    │  README.md    ...

随机推荐

  1. 电脑安装unity3d有C盘逐渐爆满问题解决方案

    打开unity3d软件,Edit - Preference - GI Cache选中 Custom Cache Location,切换到别的盘,然后点击 Clean Cache清空一次,再查看C盘,存 ...

  2. 【摘自张宴的"实战:Nginx"】try_files指令

    语法:try_files param1 [param2...paramN] fallback 默认值:none 使用环境: location 该指令用于告诉nginx测试每个文件是否存在,并且使用首先 ...

  3. react+node制作在线笔记本(一)

    一. 使用react的官方脚手架create-react-app创建项目,为了支持使用sass,我们使用eject命令 这样,我们就可以自由对webpack进行配置了. 二. 首先要安装style-l ...

  4. xml文件绑定chenckbox选择框

    //xml文件如下: <?xml version="1.0" encoding="utf-8" ?> <CallReson> <! ...

  5. .net core 基于NPOI 的excel导入导出类,支持自定义导出哪些字段,和判断导入是否有失败的记录

    #region 从Excel导入 //用法 //var cellHeader = new Dictionary<string, string>(); //cellHeader.Add(&q ...

  6. 动态合并GridView数据行DataRow的列

    前段时间,Insus.NET一直在演示GridView控件Header头行或列:<动态变更GridView控件列名>和<动态合并或定制GridView控件Header头某些列> ...

  7. PCANet: A Simple Deep Learning Baseline for Image Classification?--名词解释

    1 上采样与下采样 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个: 使得图像符合显示区域的大小 生成对应图像的缩略图 下采样原理:对于一幅图像I尺 ...

  8. PL/0语言词法分析器

    前言:关于词法分析的基础知识的介绍可以看一下这篇博客,我再累述估计也不会有这篇讲的清楚QAQ. https://www.cnblogs.com/yanlingyin/archive/2012/04/1 ...

  9. vagrant 使用

    1. 下载官方的 box 文件. 官方box列表 2. 在本地创建一个目录.如: D:\test\ 3. 运行 cmd 命令,并进入 d:\test 目录 4. 添加前面下载的 box. 添加 box ...

  10. 将已有项目同步到远程git仓库(github,gitee)及giteee的visual studio插件使用一二

    一.将已有项目同步到远程仓库的最简便方法是用git bash: 将已有项目同步到远程仓库有两种方法:1用git bash:2.用vs插件,两者的思路和步骤基本一致的. 实验发现,如果用vs插件,bas ...