GoLang的概述

1、什么是程序

完成某个功能的指令的集合

2、Go语言的诞生小故事

2.1、 开发团队-三个大牛

2.2、Google创造Golang的原因

2.3、Golang 的发展历程

2007年,谷歌工程师RobPike,KenThompson和RobertGriesemer开始设计一门全新的语言,这是Go语言的最初原型。

2009年11月10日,Google将Go语言以开放源代码的方式向全球发布。

2015年8月19日,Go1.5版发布,本次更新中移除了”最后残余的C代码“

2017年2月17日,Go语言Go1.8版发布。

2017年8月24日,Go语言Go1.9版发布。1.9.2版本

2018年2月16日,Go语言Go1.10版发布。

3、Golang的语言的特点

Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针

引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。

垃圾回收机制,内存自动回收,不需开发人员管理

天然并发(重要特点)

  1. 从语言层面支持并发,实现简单
  2. goroutine,轻量级线程,可实现大并发处理,高效利用多核。
  3. 基于CPS并发模型(CommunicatingSequentialProcesses)实现

吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信

函数可以返回多个值.

新的创新:比如切片slice、延时执行defer

4、Golang 的开发工具的介绍

4.1 工具介绍

4.2 工具选择

4.3 VSCode 的安装和使用

4.3.1 Window 下安装 VSCode

4.3.2 Linux 下安装 VSCode

4.3.3 Mac 下安装 VSCode

总结:

​ 我们会讲解在windows,linux,mac如何安装vscode开发工具,并且还会讲解如何在三个系统下安装go的sdk和如何开发go程序。但是为了学习方便,我们前期选择Windows下开发go。

​ 到我们开始讲项目和将区块链时,就会使用linux系统。

​ 在实际开发中,也可以在windows开发好程序,然后部署到linux下。

4.4 Go 语言开发环境

4.4.1、Windows下搭建Go开发环境-安装和配置SDK

4.4.2、介绍SDK

  • SDK的全称(SoftwareDevelopmentKit软件开发工具包)
  • SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包

4.4.3、下载SDK工具包

4.4.4、window 安装 SDK

  • 版本 go1.13.windows-amd64.msi

  • 设置环境变量

4.4.5、Linux 下搭建 Go 开发环境

4.4.6、Mac 下搭建Go 开发环境

5、Go 语言开发入门

5.1、开发步骤

  1. 开发这个程序/项目时,go的目录结构怎么处理.

  2. 编写代码

  3. 通过 go build 进行编译, 生成.exe 文件

  4. 通过 go run 运行 hello.go 程序

5.2、Golang 执行流程

如果是对源码编译后,再执行,Go的执行流程如下图

如果我们是对源码直接执行gorun源码,Go的执行流程如下图

两者区别

  1. 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
  2. 如果我们是直接gorungo源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。
  3. 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。

5.3、编译和运行说明

  1. 有了go源文件,通过编译器将其编译成机器可以识别的二进制码文件。

  2. 在该源文件目录下,通过gobuild对hello.go文件进行编译。可以指定生成的可执行文件名,在windows下必须是.exe后缀。

go build -o myhello.exe hello.go
  1. 如果程序没有错误,没有任何提示,会在当前目录下会出现一个可执行文件(windows下是.exe Linux下是一个可执行文件),该文件是二进制码文件,也是可以执行的程序。

  2. 如果程序有错误,编译时,会在错误的那行报错。有助于程序员调试错误

5.4、Go 程序开发的注意事项

  1. Go源文件以"go"为扩展名。

  2. Go应用程序的执行入口是main()函数。这个是和其它编程语言(比如java/c)

  3. Go语言严格区分大小写。

  4. Go方法由一条条语句构成,每个语句后不需要分号 (Go语言会在每行后自动加分号)

  5. Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错

  6. Go语言定义的变量或者import的包如果没有使用到,代码不能编译通过。

  1. 大括号都是成对出现的,缺一不可。

6、Go 语言转义字符

常用的转义字符有如下

  1. \t:表示一个制表符,通常使用它可以排版。

  2. \n: 换行符

  3. \": 一个“

  4. \r: 一个回车,重头还是,不换行

7、Golang开发常见问题和解决方法

  1. 文件名或者路径错误

8、注释(comment)

分类

  1. 行注释

  2. 块注释

说明

1)对于行注释和块注释,被注释的文字,不会被Go编译器执行。

2)块注释里面不允许有块注释嵌套[注意一下]

9、规范的代码风格

9.1、正确的注释和注释风格

  1. Go官方推荐使用行注释来注释整个方法和语句

  2. 参考看Go源码

9.2、正确的缩进和空白

  1. 使用一次tab操作,实现缩进,默认整体向右边移动,时候用shift+tab整体向左移

  2. 或者使用gofmt来进行格式化

  1. 运算符两边习惯性各加一个空格。比如:2+4*5

  2. Go语言的代码风格

正确的

// 开发一个hello.go程序,可以输出"hello,world”
package main // 导入包
import "fmt" // 主函数,程序的入口
func main() {
fmt.Println("hello, world")
}

错误的

package main

import "fmt"

func main()
{
fmt.Println("hello, world")
}
  1. 一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

10、Golang官方编程指南

网址:https://golang.org/

API库: https://golang.org/pkg

11、Golang标准库API文档

1)Golang中文网在线标准库文档: https://studygolang.com/pkgdoc

  1. Golang的包和源文件和函数的关系简图

  1. 有一个离线版的Golang_Manual_By_AstaXie_20120522.chm

12、Dos 的常用命令

12.1、dos的基本介绍

Dos:DiskOperatingSystem磁盘操作系统

12.2、dos的基本操作原理

12.3、目录操作命令

查看当前目录是什么

dir

切换到其他盘下:盘符号F盘

cd \d f:

切换到当前盘的其他目录下(使用相对路径和绝对路径演示)

cd aaa
cd d:\aaa

切换到上级

cd ..

切换到根目录

cd \

新建目录

md aaa
md aaa bbb

删除目录

rd aaa
rd /q/s aaa # 删除有内容目录,切不询问

12.4、文件操作

新建或追加内容到文件

echo hello > d:aa\abc.txt

复制或移动文件

copy abc.txt d:\text\abc.txt
move abc.txt d:\text\abc.txt

删除文件

del abc.txt
del *.txt

12.5 其它指令

清屏

cls

退出

exit

GoLang的概述的更多相关文章

  1. Golang核心编程

    源码地址: https://github.com/mikeygithub/GoCode 第1章 1Golang 的学习方向 Go 语言,我们可以简单的写成 Golang 1.2Golang 的应用领域 ...

  2. Golang的Interface是个什么鬼

    问题概述 Golang的interface,和别的语言是不同的.它不需要显式的implements,只要某个struct实现了interface里的所有函数,编译器会自动认为它实现了这个interfa ...

  3. 【GoLang】GoLang 的流程与函数

    003.GO流程与函数 1 概述 1.1 Go中流程控制分三大类:条件判断,循环控制和无条件跳转 2 流程 2.1 if 2.1.1 if条件判断语句中不需要括号 2.1.2 条件判断语句里面允许声明 ...

  4. golang 远程传输文件

    概述 之前有一篇介绍如何使用 golang 通过SSH协议来执行远程命令:golang 执行远程命令 同样,通过SSH协议也可以使用 golang 来远程传输文件. 除了 SSH 的库,为了传输文件, ...

  5. 深入学习golang(2)—channel

    Channel 1. 概述 “网络,并发”是Go语言的两大feature.Go语言号称“互联网的C语言”,与使用传统的C语言相比,写一个Server所使用的代码更少,也更简单.写一个Server除了网 ...

  6. golang之interface

    一.概述 接口类型是对 "其他类型行为" 的抽象和概况:因为接口类型不会和特定的实现细节绑定在一起:很多面向对象都有类似接口概念,但Golang语言中interface的独特之处在 ...

  7. golang之pkg(包)

    一.概述 Golang拥有超过100个标准包(可用go list std |wc -l查看) 任何包系统设计的目的都是简化大型程序的设计和维护工作,通过将一组相关的特性放进一个独立的模块以便于理解和更 ...

  8. golang基础数据结构

    一.概述: 这里主要讨论四种类型---数组.slice.map和结构体 数组和结构体是聚合类型:它们的值都是由很多个元素或者成员字段的值组成.数组是有同构元素组成--每个数组的元素的类型相同:结构体为 ...

  9. golang 并发之协程及通道

    一.概述 在golang中,每个并发执行单元称为goroutine,当程序启动时,main函数在一个单独的goroutine中运行,(main goroutine).新的goroutine会用go语句 ...

随机推荐

  1. 机器学习之决策树原理和sklearn实践

    1. 场景描述 时间:早上八点,地点:婚介所 '闺女,我有给你找了个合适的对象,今天要不要见一面?' '多大?' '26岁' '长的帅吗?' '还可以,不算太帅' '工资高吗?' '略高于平均水平' ...

  2. plsql tables 表存在,但是看不到所有的表信息

      1.情景展示 tables目录存在,但是看不到该数据库下的表信息. 2.解决方案 对比同事的发现,原来是选错用户了. 将用户切换为当前用户就行了,不知道什么时候搞成所有用户了. 写在最后 哪位大佬 ...

  3. Spring Boot 怎么打一个可执行 Jar 包?

    传统的 Java 应用程序都需要打一个 war 包,并到到 Tomcat webapps 目录下运行. Java 支持打 Jar 包,但没有提供一个标准的方式在一个 Jar 包内再加载嵌入别的 Jar ...

  4. vue.js动态绑定input的checked

    不管<input type='radio checked='true''>  你的checked属性值是true或者false,他都会选中. 其实原理是这样的,复选框里只要有checked ...

  5. BigDecimal初始化不要用double类型

    在进行单价.总价相关的计算时,就会用到BigDecimal. 在初始化时,一个不小心,就可能给自己挖坑. 示例如下: public class BigDecimalInitTest { public ...

  6. Gaze Estimation学习笔记(1)-Appearance-Based Gaze Estimation in the Wild

    目录 前言 简介 论文概述 论文主要内容 MPIIGaze数据集 引入CNN的新Gaze Estimation方法 人脸对齐与3D头部姿态判断 归一化 使用CNN进行视线检测 论文作者进行的实验及结果 ...

  7. SyntaxError: expected expression, got ")" void() : 1: 5

    这个错误的意思是: 本来希望得到 一个 表达式, 缺得到了 ), 凡是 这样的错误, 就是 函数 在当前位置, 需要一个参数! 参数没有给, 就 输入 ) 右括号了! 错误位置 1: 5, 就是 指 ...

  8. 笔记-Git:资源列表

    ylbtech-笔记-Git:资源列表 Yahoo!, Facebook, Salesforce, Microsoft, Twitter, Deutsche Telekom, Intuit, Mozi ...

  9. wow.js特效使用方法

    wow.js 的官网特效地址; https://www.delac.io/wow/ 使用方式: new WOW().init(); 需要加的CSS: .ani{visibility: hidden;}

  10. Embed MP4 in HTML using flash-player(html5 video player)

    https://stackoverflow.com/questions/1000851/embed-mp4-in-html-using-flash-player ******************* ...