go 学习 (一):环境配置

摘要:
而*testing.T和*testing.B则分别为前两者的指针类型。分别是功能测试和基准测试所需的。goget可从互联网上下载或更新指定的代码或一级依赖包,并对他们进行编译和安装goinstall用于编译并安装指定的代码包及它们的依赖包gotest会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件包导入标准引用方式:import"fmt"此时可以用“fmt.”作为前缀引用包内可导出元素,这是常用的一种方式。不然名称和被命名的东西将只能有package内部看到。

Go 下载地址:https://golang.google.cn/dl/

go 学习 (一):环境配置第1张

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语言标准库常用的包及功能
Go语言标准库包名功 能
bufio带缓冲的 I/O 操作
bytes实现字节操作
container封装堆、列表和环形列表等容器
crypto加密算法
database数据库驱动和接口
debug各种调试文件格式访问及调试功能
encoding常见算法如 JSON、XML、Base64 等
flag命令行解析
fmt格式化操作
goGo语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改
htmlHTML 转义及模板系统
image常见图形格式的访问及生成
io实现 I/O 原始访问接口及访问封装
math数学库
net网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等
os操作系统平台不依赖平台操作封装
path兼容各操作系统的路径操作实用函数
pluginGo 1.7 加入的插件系统。支持将代码编译为插件,按需加载
reflect语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值
regexp正则表达式封装
runtime运行时接口
sort排序接口
strings字符串转换、解析及实用函数
time时间接口
text文本模板及 Token 词法器

GoLand 下载地址:https://www.jetbrains.com/go/

激活码请全网搜索: goland 激活码

免责声明:文章转载自《go 学习 (一):环境配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux向文件添加内容的几种方法为Nginx服务器配置黑(白)名单的防火墙下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 9 揭秘(15. 增强的弃用注解)

Tips做一个终身学习的人。 主要介绍以下内容: 如何弃用API @deprecate Javadoc标签和@Deprecation注解在弃用的API中的角色 用于生成弃用警告的详细规则 在JDK 9中更新@Deprecation注解 JDK 9中的新的弃用警告 如何使用@SuppressWarnings注解来抑制JDK 9中的不同类型的弃用警告 如...

Linux操作系统文档

一 Linux操作系统概述 l为什么要学习Linux操作系统:  1、  大部分服务端都是使用Linux操作系统(Django,爬虫,科学运算等项目是部署到服务器中的) 2、  一些企业和学校(国外学校)采用Linux进行研发和教学 3、  很多嵌入式开发使用Linux系统 4、  大数据、云计算,采用Linux操作系统(CentOS)  Linux系统的...

关于编译Qt以及驱动的一点总结吧 Rollen Holt 博客园

关于编译Qt以及驱动的一点总结吧 - Rollen Holt - 博客园 关于编译Qt以及驱动的一点总结吧 通过这几次的折腾,对编译Qt算是有一点的心得吧: 首先我们编译QT的时候需要面对的是下载源代码,一般情况下我们建议下载qt-everywhere-opensource-src-4.8.2.zip这种形式的源代码。这样编译起来的问题也就很少了。当然...

Android.mk文件官方使用说明

本页介绍了 ndk-build 所使用的 Android.mk 编译文件的语法。 概览 Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库。它实际上是编译系统解析一次或多次的微小 GNU makefile 片段。Android.mk 文件用于定义 Application.mk、编译系统和环境变量所未定义的项目范...

qt资源加载出错

-1: error: No rule to make target '../InteractivePlayer/style.qss', needed by 'debug/qrc_res.cpp'. Stop. 问题出现: 我把添加qss资源文件 重新删除 移动位置。 再次添加新的资源文件,编译的时候出错。 解决: 1. .pro目录下 RESOURCES...

AndroidStudio技巧之copy工程

为了减少重复写代码,我们经常需要将一个已经写好的android工程拷贝成为一个新的工程,但是这个工程在运行时又会出现这样那样的问题: 比如: 原来的app文件会被覆盖掉 sd卡中旧的app文件目录被覆盖 解决: 1:修改包名,定义成你觉得与功能相对应的 2:在工程中找到GradleScripts文件夹下的build.gradle(Module:a...