1.1 Go安装与项目结构初始化
软件安装
安装包下载地址为: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安装与项目结构初始化的更多相关文章
- Ionic3学习笔记(一)安装、项目结构与常用命令
本文为原创文章,转载请标明出处 目录 安装 项目结构 常用命令 1. 安装 安装Cordova.Ionic npm install -g cordova ionic 创建一个新项目,有blank.ta ...
- Scrapy学习(二)、安装及项目结构
一.安装 1.安装pywin32,下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/ 我选择的是Build 221,点进去,根据自 ...
- 第五篇 scrapy安装及目录结构,启动spider项目
实际上安装scrapy框架时,需要安装很多依赖包,因此建议用pip安装,这里我就直接使用pycharm的安装功能直接搜索scrapy安装好了. 然后进入虚拟环境创建一个scrapy工程: (third ...
- linux go环境安装和基本项目结构
最近项目中要用到Go语言,所以简单总结一下安装和配置,Go这个语言本身就限定了很多规范,比如项目设置,编程风格等,开发中就不需要再因为各种规范问题纠结了,直接用官方规定的能避免很多坑,下面直接切正题, ...
- Angular4.x 安装|创建项目|目录结构|创建组件
Angular4.x 安装|创建项目|目录结构|创建组件 安装最新版本的 nodejs node.js 官网:https://nodejs.org/zh-cn/ 去官网下载 node.js,下一步下一 ...
- Maven01 环境准备、maven项目结构、编译/测试/打包/清除、安装、
0 前提准备 0.1 安装java开发环境 0.2 安装maven工具 1 maven项目基本结构 如图所示,整个maven项目有业务文件.测试文件.POM依赖管理文件:其实还有一个资源文件resou ...
- Webpack探索【2】--- 安装、项目初始化、webpack.config.js配置文件
本文主要讲安装.项目初始化.webpack.config.js配置文件方面的内容.
- Ionic学习记录(一):ionic及cordova安装、创建第一个应用、项目结构
目录: 一.ionic的安装 二.创建第一个应用程序 三.浏览器中预览应用 四.项目结构 五.添加页面 一.ionic的安装 使用Ionic创建和开发应用程序主要通过Ionic命令行实用程序(“CLI ...
- day1(初始化项目结构)
1.初始化项目结构 └─shiyanlou_project │ .gitignore │ README.en.md # 英文 │ README.md ...
随机推荐
- Python03 字符串类型、强制类型转化、列表、元组、字典、集合
1 字符串类型 在python中字符串类型用str表示,字符串的连接用 + 1.1 创建字符串对象 ·创建一个字符串对象有两种方式,一种方式是直接用字符串进行赋值,另外一种是利用str类实例化对象:具 ...
- 如何使CPU占用率为50%
在Linux下,CPU的状态分为系统态,用户态和空闲态,分别指系统内核执行时间,处于用户态的时间和空闲系统进程执行的时间.三者之和就是CPU的总时间. CPU的利用率就是非空闲进程占用时间的比例. 1 ...
- $this->autoRender = false
动作执行完之后禁止调用render()方法
- Redis了解
1. 使用Redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,li ...
- SDUT 3363 数据结构实验之图论七:驴友计划
数据结构实验之图论七:驴友计划 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 做为一个资深 ...
- SDUT 3362 数据结构实验之图论六:村村通公路
数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 当前农村公 ...
- POJ 2836 Rectangular Covering (状压DP)
题意:平面上有 n (2 ≤ n ≤ 15) 个点,现用平行于坐标轴的矩形去覆盖所有点,每个矩形至少盖两个点,矩形面积不可为0,求这些矩形的最小面积. 析:先预处理所有的矩形,然后dp[s] 表示 状 ...
- springMvc参数传递的方法
package cn.edu.hj.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; im ...
- ASP.NET MVC 视图层-生成链接相关(Html.ActionLink,Url.Action)
1. @Html.ActionLink() 参考 也是使用在chtml模板中,返回参数中指定controller.指定action的所生成的超链接标签<a>标签html文本.如果没有指定 ...
- Django之博客系统:自定义模板标签
Django提供了很多内置的模板标签比如{% if %}或者{% block %}Django也允许你创建自己的模板标签(template tags)来执行自定义的动作.当你需要在你的模板中添加功能而 ...