第二章 Golang的概述

2.1 什么是程序

程序,就是

why is Go语言?

Go语言 是区块链最主流的编程语言,
同时也是当前最具发展潜力的语言。

Go语言是Google公司创造的语言,也是Google主推的语言。

国外如Google、AWS、Cloudflare、CoreOS等,国内如七牛,阿里,小米,京东等都已经开始大规模使用Golang开发其云计算相关产品。

Go语言诞生的小故事

Go语言的核心开发团队

Ken Thompson(肯·汤普森)。1983年图灵奖(Turing Award)和1998年美国国家技术奖得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言,同时也是C语言的主要发明人。

RobPike(罗布·派克):曾是贝尔实验室的Unix团队,和Plan9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字元编码。

Robert Griesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8

Google为什么要创造Go语言

1.计算机硬件技术更新频繁,性能提升很快,目前主流的编程语言发展明显落后于硬件,不能合理使用多核多CPU的优势提升软件系统性能

2.软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简介高效的编程语言。【现有编程语言:1.风格不统一2.计算能力不够3.处理大并发不够友好】

3.企业运行维护很多c、c++的项目,c、c++程序运行速度虽然很快,但是编译速度很慢。同时还存在内存泄漏的一系列的困扰要解决。

2.2Go语言发展简史

2007年,谷歌工程师Rob Pike,Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。

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

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

2017年2月17日,Go语言Go1.8版发布。
2017年8月24日,Go语言Go1.9版发布。
2018年2月16日,Go语言Go1.10版发布。

2.3 Golang的语言特点

简介

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

1.从C语言中继承了很多概念,包括表达式语法,控制结构,基础数据类型,调用数据类型,动用参数传值,指针等,也保留了和C语言一样的编译执行方式及弱化的指针。
举一个案例(体验):

//go 语言的指针使用特点(体验)
func testPu(num *int){
   *num = 20
}

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

package main // 一个go文件需要在一个包
import "fmt"
func sayOk(){
	// 输出一句话
	fmt.Println('ok')
}
  1. 垃圾回收机制,内存自动回收,不需要开发人员管理【C容易出现内存泄漏】

4.天然并发【重要特点】
a.从语言层面支持并发,实现简单
b.goroutine,轻量级线程,可实现大并发处理,高效利用多核
c. 基于CPS并发模型(Communicating Sequenlal Processess) 实现
d.吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信。

// 写一个函数,实现同时返回 和,差
// go函数支持返回多个值
func getSumAndSub(n1 int,n2 int)(int,int){
	sum := n1 + n2 // go语言后不要加;
	sub := n1 - n2 
	return sum,sub
}
e.新的创新:比如切片slice、延时执行defer等

2.4 Golang 开发工具的介绍

在这里插入图片描述

工具选择(vscode)

1.下载地址

https://code.visualstudio.com/download

2.window安装
简单下一步下一步,略

VSCode的安装和使用
在d盘创建gocode

在这里插入图片描述
3.如何在Liunx中安装vscode

略(一般不在liunx上来开发)

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

介绍SDK

1.SDK的全称(Software Development Kit 软件开发工具包)
2.SDK是提供给开发人员使用的,其中包含了对开发语言的工具包

SDK下载:

1.Go语言的官网为:golang.org,因为各种原因,可能无法访问
2.SDK下载地址:Golang中国 https://www.golangtc.com/download

Windows下安装SDK:

1.Windows下SDK的个个版本说明:
Windows下:根据自己系统是32位还是64位进行下载:
32位系统:go1.9.2.windows-386.zip
64位系统:go1.9.2windows-amd64.zip

2.请注意,安装路径不要有中文或者特殊符号或符号如空格等
3.SDK安装目录建议,Windows放在d盘
4.安装时,基本上是傻瓜式安装,解压就可以用

Windows下配置Golang环境变量:

为什么配置环境变量
1.看一个现象
在这里插入图片描述2.原因分析

错误原因:当执行的程序在当前目录下如果不存在,Windows系统会在系统中已有的一个名为path的环境变量指定的目录下查找,如果仍旧没找到,会出现以上错误提示,所以进入到go安装路径\bin目录下,执行go,会看到go参数提示信息

在Go开发中,需要配置那些环境变量
在这里插入图片描述a. GOROOT
在这里插入图片描述
b.Path
在这里插入图片描述c.GOPATH
在这里插入图片描述安装完之后,检查一下是否安装成功,重新打开cmd命令窗口。如下图

在这里插入图片描述

Liunx下搭建Go开发环境-安装和配置SDK

1.Liunx下安装SDK:
Liunx下:根据系统是32位和64位(uname -a查看命令)
2.请注意:环境路径不要有中文或者特殊符号如空格等
3.SDK安装目录建议:liunx放在/opt目录下
4.安装时,解压即可,我们使用的是tar.gz

Linux下配置Golang环境变量

1.在/etc/profile文件夹下添加

export GOROOT=/opt/go
export PATH=$PATH:$GOROOT$/bin
export GOPATH=$HOME/goprojects/

2.提示:修改/ets/profile文件,需要root权限或者sudo名字

2.7 Mac下搭建Go开发环境-安装和配置SDK

1.Mac下SDK的各个版本说明:
Mac OS 下,只有64位的软件安装包
Mac OS 系统的安装包:go1.9.2.darwin-amd64.tar.gz

2.请注意:安装路径不要有中文或者特殊符号如空格等
3.sdk安装目录建议:Mac一般放在用户目录下go_devigo下
4.安装时,解压即可

Mac下配置Golang环境变量:
步骤1:使用root用户,修改/etc/profile增加环境变量的配置

export GOROOT=$HOME/go_dev/go
export PATH=$PATH/bin
export GOPATH=$HOME/goproject

步骤2:配置成功后,需要注销。再次启动。执行go version查看是否配置成功

2.8Go语言快速开发入门

需求
要求开发一个hello.go程序,可以输出“hello,world”

1.目录结构
在这里插入图片描述
2.代码如下:
在这里插入图片描述对上图说明
a.go文件的后缀是.go
b.package.main
表示该hello.go 文件所在的包是main,在go中,每个文件都归属于一个包
c.import “fmt” 表示引入一个包,包名fmt,引入改包后就可以使用fmt包中的函数,比如:fmt.Prinln
d.func main(){
} func 是一个关键字,表示一个函数。main是函数名。是一个主函数,即我们程序的入口。
e. fmt.Println(“hello”) 表示使用fmt这个包的函数输出“hello”

  1. 通过go build命令对该go文件进行编译,生成.exe文件

在这里插入图片描述
4.运行hello.exe文件即可
在这里插入图片描述5.注意:通过go run命令可以直接运行 hello.go 程序
在这里插入图片描述Liunx下如何开发Go程序

说明:liunx下开发go和Windows开发基本是一样的,只是在运行可执行的程序时以./文件名方式
演示:
在这里插入图片描述编译和运行

// 编译
go build hello.go
// 运行
./hello

也可以直接用go run hello.go方式运行

Mac下如何开发Go程序

说明:在Mac下开发go程序和Windows基本一样
演示一下:如何在Mac下开发一个Go程序

在这里插入图片描述编译再运行,或者go run来运行

编译和运行说明

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

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

修改编译文件名指令

go build -a myhello.exe hello.go

3.如果没有错误,没有任何提示,会在当前目录下出现一个可执行文件(Windows下是.exe, Liunx下是一个可执行文件),该文件是二进制码文件,也是可以执行的程序

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

运行

1.直接运行生成的可执行Go程序,比如hello.exe
2.通过运行工具go run对源码文件进行运行

Go开发注意事项

1.Go源文件以“go”为扩展名
2.Go应用程序的执行入口是main()函数
3.Go语言严格区分大小写
4.Go方法由一条条语句构成。每个语句后不需要分号(Go语言会在每行后自动加分号),这个也体现出Golang的简介性。
5.Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多行写在同一个,否则会报错
6.go语言定义的变量或者import的包如果没有用到,代码不能编译通过。
7.大括号都是成对出现的,缺一不可

2.9 Go语言的转意字符

常用的转义字符有

  1. \t : 相当于一个tab空格键
  2. \n :换行符
  3. \ :一个\
  4. " :一个"
  5. \r : 一个回车

案例:

package main

import "fmt" // 格式化,输入,输出的函数
func main(){
    // 演示转义符  \t
	fmt.Println("tom\tjack")

	fmt.Println("hello\nworld")
	fmt.Println("C:\\Users\\Administrator.S4RSCM1IE7T6BE7\\Desktop\\Project\\public")
	fmt.Println("tom说\"i love you\"")
	// \r 回车,从当前的最前面的开始输出,覆盖掉以前的内容
	fmt.Println("天龙八部雪山飞狐\r张飞厉害")
}

作业

要求用一句话输出一下语句,达到下图效果
在这里插入图片描述

代码如下:

package main
import "fmt"
func main(){
	fmt.Println("姓名\t年龄\t籍贯\t地址\njohn\t16\t河北\t北京")
}

2.11 注释

行注释
// 注释内容
块注释
/*
注释内容
*/

2.12 规范的代码风格

正确的注释和代码风格
1.Go官方推荐使用行注释来注释整个方法和语句
正确的缩进和空白
1.使用一次tab操作,实现缩进默认整体向右边移动,快捷键shfit+tab向左移动
2.或者使用 gofmt来进行格式化

gofmt -w xxx.go

3.运算符两边各加一个空格。

var num = 1 + 1

4.代码风格
正确

package main
import "fmt"
func main(){
	fmt.PrintLn("hello,world!") // shift+alt+向下箭头  复制
}

错误

package main
import "fmt"
func main(){
fmt.PrintLn("hello,world!") // shift+alt+向下箭头  复制
}

5.一行最长不要超过80个字符,超过要换行展示

fmt.PrintLn("hello,world!hello,world!hello,world!hello,world!hello,world!hello",
",world!hello,world!hello,world!hello,world!",
"hello,world!hello,world!hello,world!")

Golang官方编辑指南

Golang官方网站 https://golang.org

Golang官方标准库API文档,https://golang.org/pkg 可以查看所有包下的函数和使用

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

2.15 Dos的常用指令

dos的基本介绍
Dos:Disk Operating System 磁盘操作系统,简单说一下windows的目录结构

在这里插入图片描述

  1. 查看当前目录 dir
  2. 切换到F盘符 cd /d f:
  3. 切换到上级目录 cd …
  4. 切换到顶级目录 cd \

目录操作

1.创建目录ok200 **md ok200 **
创建ok300和ok400 md ok300 ok400
2.删除目录
rd /q/s ok200 q表示不需要询问s代表包含子文件

创建文件

echo helloworld > abc.txt
echo helloworld > d:/go/gocode/abc.txt

复制和移动
复制 copy abc.txt d:\test //使用原来文件名
copy abc.txt d:\test\a.txt // 使用新文件名
移动
move abc.txt d:\test

删除
del xxx.txt // 删除所有.txt (*.txt)

清屏
cls
退出
exit

课后习题

1.写一个输出 hello,golang的程序

package main
import "fmt"

func main(){
	fmt.Println("hello,Golang")
}

2.将个人信息 姓名 性别 表格输出出来

package main

import "fmt"

func main(){
	fmt.Println("姓名\t性别\n张三\tman")
}

感谢大家观看,我们下次见

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2019ab

你的鼓励就是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值