1.特点

  1.静态类型,编译型的开源语言

  2.脚本华的语法,支持多种编程范式(函数式&面向对象)

  3.原生,给力的并发编程的支持

2.优势

  1.脚本化的语法

  2.静态类型+编译型,程序运行速度有保障

  3.原生支持并发编程(降低开发,维护成本。程序可以更好的执行)

3.劣势

  1.语法糖并没有python和ruby那么多

  2.目前的程序运行速度还不及c。但已经赶超c++和Java

  3.第三方函数库暂时不能像绝对主流的编程语言那样多

4.环境设置

  1.GOROOT:安装目录

  2.GOPATH:工作区

  3.GOBIN:编译文件

5.工作区和GOPATH

1.工作区是放置go源码文件的目录

2.一般情况下,go源码文件都需要存放在工作区

3.对于命令源码文件,并不是必须的

4.工作区的目录:

  0.平台相关目录

    1.两个隐含的go语言环境变量

      GOOS:操作系统

      GOARCH:计算架构

    2.以$GOOS_ $GOARCH 为命名方式,如darwin_amd64

  1.src:

    1.用于存放源码文件

    2.以代码包为组织形式

  2.pkg:

    1.用于存放归档文件(名称以.a为后缀的文件)

    2.所有归档文件都会被存放在pkg目录下的平台相关目录中,同样以代码包为组织形式

  3.bin:

    1.用于存放当前工作区中的go程序的可执行文件

    2.失效:

      1.当环境变量GOBIN已有效设置时,该目录会变的无意义

      2.当GOPATH的值中包含多个工作区的路径时,必须设置GOBIN,否则无法成功安装go程序的可执行文件

6.源码文件的分类和含义

1.go源码文件

1.名称以.go为后缀,内容以go语言代码组织的文件

2.多个go源码文件是需要用代码包组织起来的

2.源码文件分类

  1.命令源码文件,库源码文件:go语言程序

  2.测试源码文件:辅助源码文件

  3.命令源码文件

    1.声明自己属于main代码包,包含无参数声明和结果声明的main函数

    2.被安装后,相应的可执行文件会被存放到GOBIN指向的目录或 当前工作区目录的bin目录下

    3.go程序的入口,但不建议把程序都写在一个文件中

    4.同一个代码包中强烈不建议直接包含多个命令源码文件

  4.库源码文件

    1.不具备命令源码文件的特征的源码文件

    2.被安装后,相应的归档文件会被存放到当 前工作区目录/pkg/平台相关目录 下

  5.测试源码文件

    1.与库源码文件类似

    2.不具备命令源码文件的特征的源码文件

    3.名称以_test.go为后缀

    4.有测试函数:

      1.至少有一个函数名称以Test或Benchmark为前缀

      2.该函数接受一个类型为*testing.T或*testing.B的参数

      3.示例:

func TestFind(t *testing.T){ } //功能测试函数

func BenchmarkFind(b *testing.B){ } //基准测试函数或性能测试函数

7.代码包的相关知识

1.代码包的作用

1.编译和归档的最基本单位

2.代码划分,集结和依赖的有效组织形式,也是权限控制的辅助手段

2.代码包的规则

  1.一个代码包实际上就是一个由导入路径代表的目录

  2.导入路径即 (工作区目录/src 或 工作区目录/pkg/平台相关目录) 之下的某段子目录

  3.代码包的声明

    1.每个源码文件必须声明其所属的代码包

    2.同一个代码包中的所有源码文件声明的代码包应该是相同的

  4.代码包声明与代码包导入路径的区别

    1.代码包声明语句中的包名称应该是该代码包的导入路径的最右子路径

  5.代码包导入

    1.代码包导入语句中使用的包名称应该与其导入的路径一致

  6.代码包导入方法

    1.普通导入方法

      import “strings”===> strings.HasPrefix(“abc”,”a”)

    2.带别名的导入

      import str “strings”===>str.HasPrefix(“abc”,”a”)   //可以直接使用别名

    3.本地化的导入

      import . “strings”===>HasPrefix(“abc”,”a”)   //无需前缀,本地!!!

    4.仅仅初始化

      import _ “strings”  //仅执行代码包中的初始化函数

7.代码包初始化

  1.代码包初始化函数即:无参数声明和结果声明的init函数

  2.init函数可以被声明在任何文件中,且可以有多个,同一代码包下多个init函数执行顺序是不确定的

  3.init函数执行时机

    1.单一代码包内:对所有全局函数进行求值===>执行所有init函数

    2.不同代码包之间:执行被导入代码包中的init===>执行导入它的那个代码包的init函数

    3. 4.每一个init函数只会被执行一次,init在main函数之前执行

8.命令基础

1.go run

  1.用于运行命令源码文件

  2.只能接受一个命令源码文件以及若干个库源码文件作为文件参数,程序只能有一个入口

  3.其内部操作步骤是:先编译源码文件再运行

    源码文件 —> 编译 —> 临时文件 —>运行 —>1. 可执行文件 2.归档文件

  4.常用标记

    1.-a :强制编译相关代码,不论它们的编译结果是否已是最新的,一般加上

    2.-n :打印编译过程中所需的命令,但不真正执行它们

    3.-p n :并行编译,n代表并行数量。n的值最好设置为当前cpu的逻辑cpu(所有cpu的核的总数量)的个数。加快编译速度

    4.-v : 列出被编译的代码包的名称(不包含go语言自带的标准库的代码包)

    5.-work :显示编译时创建的临时工作目录的路径,并且不删除此临时工作目录

    6.-x :打印编译过程中所需运行的命令,并执行它们

2.go build

  1.用于编译源码文件或代码包

  2.编译非命令源码文件不会产生任何结果文件,只会检查源码文件的有效性

  3.编译命令源码文件会在该命令的执行目录中生成一个可执行文件

  4.执行该命令且不追加任何参数时,它会试图把当前目录作为代码包并编译

  5.执行该命令且以代码包的导入路径作为参数时,该代码包及其依赖会被编译

  6.执行该命令且以若干源码文件作为参数时,只有这些文件会被编

3.go install

  1.用于编译并安装代码包或源码文件

  2.安装代码包会在当前工作区的 pkg/平台相关目录 下生成归档文件

  3.安装命令源码文件会在当前工作区的bin目录或$GOBIN目录下生成可执行文件

  4.执行该命令且不追加任何参数时,它会试图把当前目录作为代码包并安装

  5.执行该命令且以代码包的导入路径作为参数时,该代码包及其依赖会被安装

  6.执行该命令且以命令源码文件及相关库源码文件作为参数时,只有这些文件会被编译并安装

4.go get

  1.用于从远程仓库上下载并安装代码包 如:GitHub,gitLlab,Gogs

  2.受支持的代码版本控制系统:git,hg,svn,bazaar

  3.指定的代码包会被带走到¥GOPATH中包含的第一个工作区的src目录中 4.常用标记

    1.-d :直至下载工作,而不执行安装动作

    2.-fix :在下载代码包之后先执行修正动作,而后再紧张编译和安装。主要为了消除版本不兼容

    3.-u :利用网络来更新已有的代码包及其依赖包

优雅的go语言--入门篇的更多相关文章

  1. Go语言入门篇-网络经验

    Go语言学习手册 golang*看云  golang圣经 wuYinIO 1.go语言开发中的坑 go新手容易犯的三个致命错误   Golang 需要避免踩的 50 个坑 2.go语言数据类型 map ...

  2. 明解C语言 入门篇 第五章答案

    练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...

  3. Go语言入门篇-gRPC基于golang & java简单实现

    一.什么是RPC 1.简介: RPC:Remote Procedure Call,远程过程调用.简单来说就是两个进程之间的数据交互. 正常服务端的接口服务是提供给用户端(在Web开发中就是浏览器)或者 ...

  4. Go语言入门篇-JSON&http调用

    一.Decoder /(一)Decoder func DecoderExample(){ const jsonStream = ` { "Name" : "Ed" ...

  5. Go语言入门篇-使用Beego构建完整web应用

    使用Beego构建完整web应用 一.GO简介(Beego应用go编写) 1.为什么用GO (1).语法简单 (2).简洁的并发 (3).开发和执行效率快(编译型语言) 2.GO语言环境 下载go & ...

  6. Go语言入门篇-项目常见用法&语法

    一.导入包用法: //_表示仅执行该包下的init函数(不需要整个包导入) import _ "git.xx.xx/baases/identity/cachain/version" ...

  7. Go语言入门篇-基本数据类型

    一.程序实体与关键字 任何Go语言源码文件都由若干个程序实体组成的.在Go语言中,变量.常量.函数.结构体和接口被统称为“程序实体”,而它们的名字被统称为“标识符”. 标识符可以是任何Unicode编 ...

  8. Go语言入门篇-命令 与 语法

    一.命令基础 1. go run : 用于运行命令源码文件(如:go run helloworld.go) 只能接受一个命令源码文件以及若干个库源码文件作为文件参数 其内部操作步骤: (1)先编译源码 ...

  9. Go语言入门篇-环境准备

    一.GO语言特点 静态类型:首先要明确变量类型,如上所示. 编译型:指GO语言要被编译成机器能识别机器代码. GO语言开源. 编程范式:支持“函数式”和“面向对象” GO语言原生的支持并发编程:即GO ...

随机推荐

  1. r 数据分组处理

    一.R语言实现数据的分组求和 实验数据集 姓名,年龄,班级 ,成绩, 科目 student <- data.frame ( name = c("s1", "s2&q ...

  2. C# - 简单介绍TaskScheduler

    task Scheduler根据定义 The task Scheduler by the definition blurb. “Is the class where the usage context ...

  3. 什么是事务(transaction)?它有什么好处

    为了完成对数据的操作,企业应用经常要求并发访问在多个构件之间共享的数据.这些应用在下列条件下应该维护数据的完整性(由应用的商务规则来定义): 分布式访问一个单独的数据资源,以及从一个单独的应用构件访问 ...

  4. java_Observer Design Pattern

    摘自: http://www.ntu.edu.sg/home/ehchua/programming/java/J4a_GUI.html Creating Your Own Event, Source ...

  5. tomcat日志神器--kibana

    最近公司搭了套kibana的日志系统,感受比原来查看日志方便多了.记得以前查看日志是通过ssh到服务器,查看系统日志用vi查看器查看或者下载到本地,用logview查看搜索,可读性很低.自从用了kib ...

  6. JQuery元素控制方法汇总

    1.在元素内部追加内容 $("元素名").append(content) 2.在元素中的不同位置追加内容 $("元素名").appendTo(content) ...

  7. 动态生成的DOM不会触发onclick事件的原因及解决方法

    最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论.这里使用了动态加载的<span mid='123456789′ class='get_comment ...

  8. linux,shell脚本中获取脚本的名字,使用脚本的名字。

    需求描述: 写shell脚本的过程中,有时会需要获取脚本的名字,比如,有的时候,脚本 中会有usage()这种函数,可能就会用到脚本的名字. 实现方法: shell脚本中,通过使用$0就可以获取到脚本 ...

  9. 【java】 java 设计模式(1):工厂方法模式(Factory Method)

    工厂方法模式分为三种: 1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建.首先看下关系图: 举例如下:(我们举一个发送邮件和短信的例子) 首先,创建二者的共同接口:   p ...

  10. C#操作MSMQ(消息队列)

    using System; using System.Collections.Generic; using System.Text; using System.Messaging; using Sys ...