初识go语言

01.go语言的发展历程

2009年11月10日,Go语言诞生日
2012年3月28日,Go1.0发布,同时发布“Go1兼容性”承诺
2015年8月11日,Go1.5发布,完全移除C语言部分
2018年8月25日,Go1.11发布,引入新的Go包管理机制:Go Modules
2021年2月17日,Go1.16发布,Go Modules成为默认包管理机制
2021年8月16日,Go1.17发布,将Go程序性能提高约5%
2022年3月15日,Go1.18发布,支持泛型、模糊测试、工作区
2022年8月3日,Go1.19发布,完善Go1.18,丰富文档注释语法

02.go语言的应用领域

1.C和C++能做的,Go语言都可以做
Go语言目前在服务器端的落地应用有:数据打包,日志处理,文件系统,数据库代理,Web应用,api应用等
2.云计算时代的C语言
Go语言目前在云计算的落地应用有:京东的消息推送服务,京东分布式文件系统
3.区块链的主流开发语言正是Go语言
Go语言目前在区块链的落地应用有:以太坊,金链盟区块链技术框架FISCO-BCOS
4.Go语言非常适合做数据挖掘,分析,存储
Go语言目前在人工智能和大数据的落地应用有:pholcus(爬虫),TiDB(存储),针对Tensorflow编写各种API

03.go语言的特性

1.编译快,效率高
相较于 Java和C++ 相对较慢的编译速度,Go语言的编译速度快是一个主要的优势。
2.易学习,成本低
Go语言语法简单,与C语言的语法类似。
3.强大的标准库
Go语言中的标准库非常稳定,并且丰富多样,包括网络、系统、加密、编码、图形等各个方面。
4.简单的高并发
Go语言的Goroutine和Channel的出现让 处理并发和异步 编程的问题变得优雅和流畅
5.便捷的应用
不依赖任何系统提供的编译器和链接器,其编译出来的二进制可执行文件几乎可以运行在任何系统环境中。
6.良好的规范
除代码规范之外还拥有强大的编译检查、严格的编码规范和很强的稳定性。
7.持续的发展
Google公司聚集了一批具备世界水准的软件工程师。

04.go程序运行环境

使用文本编辑器创建Go程序 => 保存文件 => 编译程序 => 运行编译得到的可执行文件

$GOROOT //Go的实际安装路径
$GOARCH //计算机的处理架构(x86、ARM等)
$GOOS //计算机的操作系统(windows、linux等)
$GOBIN //编译器的链接器的安装位置,默认是$GOROOT/bin
$GOPATH //项目的工作目录,内含三个规定的目录:src (存放源码文件)、pkg(存放包文件)和bin(存放可执行文件)

在这里插入图片描述

05.开发工具

1.Goland
在这里插入图片描述

1.是Jetbrains针对Go语言所开发的一款商业IDE
2.GoLand整合了IntelliJ平台
3.提供了针对Go语言的编码辅助和工具集成
4.对代码编写、自动补全和运行调试都有极大的帮助
5.是大多数开发者的首选工具

2.VSCode
在这里插入图片描述

1.全称是Visual Studio Code
2.由微软Microsoft所开发的一款免费的开发工具
3.具有简单、轻快、开放的特点
4.支持多种语言,默认提供Go语言的语法高亮
5.在安装Go语言插件之后,还可以支持智能提示、编译运行等诸多实用功能

3.Vim
在这里插入图片描述

1.从vi发展出来的一个Linux平台的文本编辑器
2.以字体颜色辨别语法的正确性
3.具有代码补全、编译及错误跳转等功能
4.是很多程序员在Linux下必备的一款工具

06.Go Modules

1.go 1.11之前

1.代码开发必须在go path src目录下,不然在执行过程中会遇到问题。
2.使用go path进行管理,极其依赖手动管理,并且依赖包没有版本可言。
3.后推出govendor解决了包依赖,一个配置文件就管理;但是依赖包全都下载到项目vendor下,导致每个项目都会持有一部分相同文件。

2.go 1.11

1.推出特性go modules,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。
2.Modules是相关Go包的集合,是源代码交换和版本控制的单元。
3.Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。

3.go mod相关命令

go mod download //下载依赖包到本地(默认为 GOPATH/pkg/mod 目录)
go mod edit //编辑 go.mod 文件
go mod graph //打印模块依赖图
go mod init //初始化当前文件夹,创建 go.mod 文件
go mod tidy //增加缺少的包,删除无用的包
go mod vendor //将依赖复制到 vendor 目录下
go mod verify //校验依赖
go mod why //解释为什么需要依赖

4.初始化项目
go mod init + 模块名称

!项目如果不在GOPATH下,则必须要有go.mod文件,否则运行会报错

在这里插入图片描述

07.第一个Go语言程序

1.example
在这里插入图片描述
2.test

package main	//指定其所在的包
//在Go语言中所有的文件都需要指定其所在的包(package)
import “fmt“	//导入fmt包
func main()  {	//main()函数是程序的入口
    fmt.Println("不忘初心,牢记使命 !")
}

//运行结果为:
//不忘初心,牢记使命 !"

3.包有两种类型

1.main包
在代码的开头使用package main进行声明
2.非main包
在代码的开头使用package+包名进行声明

4.Go语言程序结构

    1. 包声明
    1. 引入包
    1. 函数
    1. 变量
    1. 语句&表达式
    1. 注释

易错点注意:

  1. **“{”**  不能单独放在一行;否则会在运行时产生“syntax error: unexpected semicolon or newline before {”的错误。 
    

2.在整个程序中有且仅能有一个main函数;如果出现多个main函数则不能正常运行。

08.编译与运行

在这里插入图片描述

  • Go语言中使用 go build 命令主要用于编译代码
  • go build 命令会将1.2-hello.go文件编译成1.2-hello.exe文件
  • GoLand的Run‘go build 1.2-hello.go’操作会运行编译后的1.2-hello.exe文件,在文件运行结束后会自动删除1.2-hello.exe文件
    在这里插入图片描述

在这里插入图片描述

  • go run命令也能够编译源码
  • 不会在当前目录留下可执行文件
  • 把编译和执行合为一步完成
  • 本质是:把编译过程隐藏了起来,编译过程依然存在,可执行文件被放在临时文件中被执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值