go 学习 (一):环境配置
Go 下载地址:https://golang.google.cn/dl/
1、右键我的电脑 --> 左上方 “高级系统设置” ---> 环境变量 --> 第二个菜单栏 “系统变量” --> 找到变量名为 “Path” --> 双击并点击新建,添加 go/bin 目录 --> 点击确定才会生效
2、新建文件夹作为源码的工作区(内建3个子文件夹:bin、pkg、src) --> 环境变量中的系统变量新建变量:GOPATH 新建文件夹路径;将新建文件夹的子文件夹bin加入PATH系统变量中 --> 确定保存
工作区
bin目录:存放 go install 安装产生的可执行文件(Windows中以 源码主文件名.exe结尾的可执行文件)
pkg目录:存放 go install 安装产生的用户代码包归档文件(以 .a结尾的文件),自己写的代码包编译安装后产生的文件,例 log包 被编译安装后,产生一个 log.a 的归档文件,会存放在 pkg/log.a 当中。
src目录:保存 go源码文件,若一个源码文件被声明属于代码包 log,则应保存在 src/log 目录中;若直接放于src目录下,必须声明属于代码包 main。
GOPATH
将工作区的目录路径添加到 GOPATH 中,才能使同一工作区的代码对代码包进行调用
GOPATH 中不要包含Go语言的根目录,以便将Go语言本身的工作区同用户工作区严格分开。
通过 Go 工具中的代码获取命令 go get,可将指定项目的源码下载到我们在 GOPATH 中设定的第一个工作区中,并在其中完成编译和安装。
源码文件
命令源码文件
例:某个源码文件 hello.go 被声明属于 package main main代码包,且该文件中包含,无参数的声明了结果的main函数,是命令源码文件,可直接通过 go run hello.go 运行该文件
同一个代码包中所有源码文件,其声明的所属代码包名称必须相同,且 命令源码文件和库源码文件不能存在于同一个代码包中,否则将无法使用 go build 、 go install 命令进行编译安装
规范:命令源码文件单独放置一个代码包中,多个命令源码文件不能放入一个代码包中(致使 go build、go install 命令无法编译安装这个代码包,但是可以单独使用 go run 运行每个源码文件)
当代码包中有且仅有一个命令源码文件时,在所在目录执行 go build 即可在同目录下生成一个与目录同名的可执行文件;若使用 go install 则在工作区的 bin目录下 生成可执行文件(只有当 GOPATH 环境变量中只包含一个工作区目录路径时才生效,反之失败 --> 需设置 GOBIN 环境变量)
库源码文件
库源码文件不包含 无参数声明和无结果声明的 main函数,库源码文件声明的包名会与它直接所属的代码包(目录)名一致
安装库源码文件时所生成的归档文件会被存放到当前工作区的 pkg 目录中
测试源码文件
是可以通过执行 go test 命令运行当前代码包下的所有测试源码文件的特殊库文件。
测试源码文件的条件:
- 文件名需要以"_test.go"结尾。
- 文件中需要至少包含一个名称以 Test 开头或 Benchmark 开头,且拥有一个类型为 *testing.T 或 *testing.B 的参数的函数。testing.T 和 testing.B 是两个结构体类型。而 *testing.T 和 *testing.B 则分别为前两者的指针类型。分别是功能测试和基准测试所需的。
常用命令
go build 可将Go源码编译成二进制的可执行文件,但需手动运行该二进制文件;
go clean 移除当前源码包里面编译生成的文件
go run 它会在编译后直接运行Go程序,编译过程中会产生一个临时文件,但不会生成可执行文件。
go get 可从互联网上下载或更新指定的代码或一级依赖包,并对他们进行编译和安装
go install 用于编译并安装指定的代码包及它们的依赖包
go test 会自动读取源码目录下面名为 *_test.go的文件,生成并运行测试用的可执行文件
包导入
标准引用方式: import "fmt"
此时可以用“fmt.”作为前缀引用包内可导出元素,这是常用的一种方式。
别名引用方式如下: import F "fmt"
此时相当于给包 fmt 起了个别名 F,用“F.”代替标准的“fmt.”作为前缀引用 fmt 包内可导出元素。
省略方式如下: import . "fmt"
此时相当于把包 fmt 的命名空间直接合并到当前程序的命名空间中,使用 fmt 包内可导出元素可以不用前缀“fmt.”,直接引用。示例如下:
package main
import . "fmt"
func main () {
//不需要加前级 fmt.
Println( "hello , world!”)
}
仅执行包初始化 init 函数: import _ "fmt"
使用标准格式引用包,但若在代码中并未使用包,编译器会报错。如果包中有 init 初始化函数,则通过 import _ "packageName" 这种方式引用包,仅执行包的初始化函数,即使包没有 init 初始化函数,也不会引发编译器报错。
- 一个包可以有多个 init 函数,包加载会执行全部的 init 函数,但并不能保证执行顺序,所以不建议在一个包中放入多个 init 函数,将需要初始化的逻辑放到一个 init 函数里面。
- 包不能出现环形引用。比如包 a 引用了包 b,包 b 引用了包 c,如果包 c 又引用了包 a,则编译不能通过。
- 包的重复引用是允许的。比如包 a 引用了包 b 和包 c,包 b 和包 c 都引用了包 d。这种场景相当于重复引用了 d,这种情况是允许的,并且 Go 编译器保证 d 的 init 函数只会执行一次。
注意
- `{ ` 不能单独放在一行,否则产生编译错误
- 如果顶极类型名字首字母(包括:function, method, constant or variable, or of a structure field or method)是大写,那么引用了这个包(package)的使用者就可以访问到它。不然 名称和被命名的东西将只能有package内部看到。
Go语言标准库包名 | 功 能 |
---|---|
bufio | 带缓冲的 I/O 操作 |
bytes | 实现字节操作 |
container | 封装堆、列表和环形列表等容器 |
crypto | 加密算法 |
database | 数据库驱动和接口 |
debug | 各种调试文件格式访问及调试功能 |
encoding | 常见算法如 JSON、XML、Base64 等 |
flag | 命令行解析 |
fmt | 格式化操作 |
go | Go语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改 |
html | HTML 转义及模板系统 |
image | 常见图形格式的访问及生成 |
io | 实现 I/O 原始访问接口及访问封装 |
math | 数学库 |
net | 网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等 |
os | 操作系统平台不依赖平台操作封装 |
path | 兼容各操作系统的路径操作实用函数 |
plugin | Go 1.7 加入的插件系统。支持将代码编译为插件,按需加载 |
reflect | 语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值 |
regexp | 正则表达式封装 |
runtime | 运行时接口 |
sort | 排序接口 |
strings | 字符串转换、解析及实用函数 |
time | 时间接口 |
text | 文本模板及 Token 词法器 |
GoLand 下载地址:https://www.jetbrains.com/go/
激活码请全网搜索: goland 激活码
go 学习 (一):环境配置的更多相关文章
- 深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow
深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow 最近在公司做深度学习相关的学习和实验,原来一直 ...
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- (转)深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0
深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 发表于2016年07月15号由52nlp 接上文<深度学习主机攒机小记>,这台GTX10 ...
- 深度学习主机环境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow
接上文<深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0>,我们继续来安装 TensorFlow,使其支持GeForce GTX 1080显卡 ...
- 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0
不多说,直接上干货! 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0
- Libgdx游戏学习(1)——环境配置及demo运行
原文: Libgdx游戏学习(1)--环境配置及demo运行 - Stars-One的杂货小窝 Libgdx游戏是基于Java的一款游戏引擎,可以发布Android,桌面端,Html,IOS等游戏,出 ...
- JMeter学习-002-JMeter环境配置
本节主要介绍 JMeter 本地环境配置(JMeter 版本为 apache-jmeter-2.12),详细配置如下: 一.JDK配置 默认用户本地已经安装且配置好 JDK.若未配置,敬请参阅我的博客 ...
- ES6学习之环境配置
环境配置 一.建立工程目录 新建dist文件夹(用于存放转化的es5文件).新建src文件夹(用于存放es6文件),在该文件夹下建立index.js文件 二.编写index.html 在根目录下新建i ...
- 深度学习中环境配置的一些经验总结(conda 常用命令)
前两个月参加了学校的国创项目,和一个外院的同学组队.课题是基于深度学习的新闻图片中网络暴力元素的检查. 6月末最后一门试考完,正式开始暑假,便有了大把时间搞这个国创项目(反正没有其他事干).两个组凑钱 ...
- [Struts2学习笔记] -- 环境配置
在创建好WebProject后,就可以开始进行Struts2的环境配置,可以到Struts2官网下载,本环境使用struts-2.3.24.1版本. 首先导入必要的jar包到WebProject的/W ...
随机推荐
- C语言 hello
#include <stdio.h> int main() { /* 我的第一个 C 程序 */ printf("Hello, World! \n"); ; } 实例解 ...
- CentOS7 安装 Docker、最佳Docker学习文档
目录 一.Docker支持 二.安装Docker -1.在新主机上首次安装Docker CE之前,需要设置Docker存储库.之后,就可以从存储库安装和更新Docker. 0.卸载旧版 1.正式安装 ...
- Java调用Http/Https接口(3)--Commons-HttpClient调用Http/Https接口
Commons-HttpClient原来是Apache Commons项目下的一个组件,现已被HttpComponents项目下的HttpClient组件所取代:作为调用Http接口的一种选择,本文介 ...
- Java自学-控制流程 结束外部循环
Java中结束外部循环 Java中如何结束外部for循环? 示例 1 : 结束当前循环 break; 只能结束当前循环 public class HelloWorld { public static ...
- git恢复已删的分支
git恢复已经删除的分支 执行git命令, 找回之前提交的commit git log -g 执行效果 commit 80fd3a3e1abeab52030ee9f6ec32b5c815de20a9 ...
- nodeJS从入门到进阶二(网络部分)
一.网络服务器 1.http状态码 1xx: 表示普通请求,没有特殊含义 2xx:请求成功 200:请求成功 3xx:表示重定向 301 永久重定向 302 临时重定向 303 使用缓存(服务器没有更 ...
- Django:内置组件Content-Type
12.Django组件之Content_Type 1.帮助我们生成了一张表,里面有所有表名.这样不再自建表在表中填表名,用Foreignkey获取 2.为了让我们快速进入插入数据,填写一个字段Gene ...
- IntelliJ IDEA快速自动生成Junit测试类
1.背景 测试是保证代码必不可少的环节,自己构建测试方法太慢,并且命名也不规范,idea中提供了,一键构建测试结构的功能...废话不多说,直接写步骤 2.步骤 1.在需要做测试的类的当前窗口,直接按快 ...
- 我的oracle 健康检查报告
最近一直想用sql来生成oracle的健康检查报告,这样看起来一目了然,经过网上搜资料加自己整理终于算是成型了,部分结果如下图所示, 具体参考附件,恳请广大网友看看是否还有需要添加的地方. DB_he ...
- selenium三个等待方法
为什么需要等待时间:页面加载需要时间,如果页面没有加载完成,直接去定位,可能定位不到元素 1.强制等待: import time time.sleep(2) 不管有没有完成加载,必须等待2秒 2.隐式 ...