01-GO语言基本概念和安装使用
- 一、概念
- 1.1 Go语言的诞生
- 1.2 GO语言的特点:
- 二、安装go
- 2.1 安装
- 2.2 安装环境变量
- 三、下载&安装goland
- 3.1 官网下载
- 3.2 下载后,进行安装:
- 四、Go语言的特性(重点)
- 4.1 第一个hello word(详解)
- 4.2 开发编译。(重要点 / 面试题)
- 4.3 开发注意事项
如何学习:
- 先建立整体框架,然后再去抠细节。
- 先Know how,然后know why。
- 先做出来,然后再去一点点研究,才会事半功倍。
- 适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。
- 对于GO语言,切记遵守语法格式规则。(例如python语言、例如SpringBoot框架等)
解释:某些知识点,就是很难了解,那么先做出来,然后继续向前学习,可能在某个时间点我们就会恍然大悟。
一、概念
1.1 Go语言的诞生
- 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
- 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。[现有的编程语言: 1.风格不统一 2计算能力不够 3.处理大并发不够好]
- 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一系列的困扰需要解决。
1.2 GO语言的特点:
Go 语言保证了既能到达静态编译语言【比如C语言】的安全和性能 ,又达到了动态语言【比如Python语言】开发维护的高效率,使用一个表达式来形容 Go 语言: Go = C + Python,说明 Go 语言既有 C静态语言程序的运行速度,又能达到 Pvthon 动态语言的快速开发。
- 从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等,也保留了和 C语言一样的编译执行方式及弱化的指针
举一个案例(体验):
//go语言的指针的使用特点
func testPtr(num *int){
*num = 20
}
- 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
package main
import "fmt"
func sayHello(){
fmt.Println("hello")
}
- 垃圾回收机制,内存自动回收,不需开发人员管理。
从语言中并不支持垃圾回收机制,就会出现内存泄露。而GO支持垃圾回收,相当于对C语言进行了优化。
- 天然并发
-
从语言层面支持并发,实现简单。
-
goroutine,轻量级线程,可实现大并发处理,高效利用多核
-
基于CPS并发模型(Communicating Sequential Processes)实现
-
GO服务端时:数据处理能力强,处理大并发有优势
游戏处理时:数据通道比较强
-
吸收了管道通信机制,形成Go语言特有的管道channel。通过管道channel,可以实现不同的goroute之间的相互通信。
-
函数返回多个值(示意代码)
//写一个函数,实现同时返回 和,差
//go 函数支持返回多个值
// n1 n2 是传入的两个参数,,后面是返回两个int类型的数据。
func getSumAndSub(nl int, n2 int) (int, int ){
sum := n1 + n2 //go 语句后面不要带分号
sub := n1 - n2
return sum , sub
}
- 新的创新:比如切片(例如java的集合)、延时执行defer(方便回收资源)等
二、安装go
2.1 安装
- 官网下载go
- 我下载的版本是:
1.9.2.windows-amd64
解压皆可以使用形式。
D:\Program Files\go\go1.9.2.windows-amd64\bin>go version
go version go1.9.2 windows/amd64
2.2 安装环境变量
-
所有的路径是:
D:\Program Files\go\go1.9.2.windows-amd64\bin
-
关于“GOROOT”路径是:
D:\Program Files\go\go1.9.2.windows-amd64
-
关于PATH路径是:
%GOROOT%\bin
测试:
三、下载&安装goland
3.1 官网下载
下载地址:https://www.jetbrains.com/go/download/#section=windows
我下载的版本是:goland-2023.2.4
3.2 下载后,进行安装:
-
双机执行下载后的.exe文件
-
然后直接下一步
-
自定义安装路径。我喜欢装载D盘,但是不喜欢更改后面的默认安装路径。根据自己的习惯吧
-
我把所有的选项解释,都放入下面了,如果不知道怎么选,跟着我来就可以了。
Update context menu框:是更新菜单的,可选可不选。
Create Desktop Shortcut框:是选择多少位的快捷方式,根据电脑系统来选择就可以了。
Download and install 32-bit JetBrains Runtime框:是下载JRE的,本机没有的装的话可以勾选下载。一般是自己在电脑另外安装jdk环境,所以可以不勾。如果已经安装了jdk,也是建议不用勾选了的
Create Assocations框: 是创建文件的关联的,比如说你勾选了java,如果,以后电脑上的.go 文件都会默认启动idea的方式显示打开。
看了好多广告得到的,懂的用:
MXMQUYT815-eyJsaWNlbnNlSWQiOiJNWE1RVVlUODE1IiwibGljZW5zZWVOYW1lIjoiSHVuYW4gSW5zdGl0dXRlIG9mIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kiLCJhc3NpZ25lZU5hbWUiOiJqaWtlIGNvZGUiLCJhc3NpZ25lZUVtYWlsIjoiamV0YnJhaW5zMjMwMjA2QG91dGxvb2suY29tIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiRm9yIGVkdWNhdGlvbmFsIHVzZSBvbmx5IiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTQyIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJHTyIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiRE0iLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTRiIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJEUyIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlNWIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IkRDIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRQIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBEQiIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQV1MiLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFNJIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBQUyIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQQ1dNUCIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQR08iLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFBDIiwicGFpZFVwVG8iOiIyMDI0LTAyLTA5IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBSQiIsInBhaWRVcFRvIjoiMjAyNC0wMi0wOSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQU1ciLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUlMiLCJwYWlkVXBUbyI6IjIwMjQtMDItMDkiLCJleHRlbmRlZCI6dHJ1ZX1dLCJtZXRhZGF0YSI6IjAxMjAyMzAyMDZMUEFBMDA4MDA5IiwiaGFzaCI6IjQyNTQ5NjcyLzIwMDk1Nzk5Oi03OTk2MzgyNTgiLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-OXfbtL5lwz9bDhPZ0POhH6h8h1ubDm0bzkRWX33IjJlRmK4BkGzO65BWjIJ+ndT0stY8uOUWo4FM1Aej+YGXMTlyD3rcCBkcFN6dB6FEVelLYoBevxN9myhp0IGvfHaLQ6hoVxAKr0AkSAlSsgKVN6gOYw7Nn8lR/ivpuXXteZWiG4x7KCxHM/6/oPXAbQQmD1sy2q05s1tsvxBltZbsFJ3/Yv6lG89h0YlN9FvFciqUM6B1Cc5Fo7a6oUOfpyCJKPSwzyzkxLOhlL4QO6/LfQ3zNO9wirnz506mZXh3oB+wS1gDFLk7RehEQMqdqnjh+zaNKi1QKB/cyK1Op0oDTQ==-MIIETDCCAjSgAwIBAgIBDzANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIyMTAxMDE2MDU0NFoXDTI0MTAxMTE2MDU0NFowHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMjEwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/W3uCpU5M2y48rUR/3fFR6y4xj1nOm3rIuGp2brELVGzdgK2BezjnDXpAxVDw5657hBkAUMoyByiDs2MgmVi9IcqdAwpk988/Daaajq9xuU1of59jH9eQ9c3BmsEtdA4boN3VpenYKATwmpKYkJKVc07ZKoXL6kSyZuF7Jq7HoQZcclChbF75QJPGbri3cw9vDk/e46kuzfwpGftvl6+vKibpInO6Dv0ocwImDbOutyZC7E+BwpEm1TJZW4XovMBegHhWC04cJvpH1u98xoR94ichw0jKhdppywARe43rGU96163RckIuFmFDQKZV9SMUrwpQFu4Z2D5yTNqnlLRfAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQU5FZqQ4gnVc+inIeZF+o3ID+VhcEwSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBANLG1anEKid4W87vQkqWaQTkRtFKJ2GFtBeMhvLhIyM6Cg3FdQnMZr0qr9mlV0w289pf/+M14J7S7SgsfwxMJvFbw9gZlwHvhBl24N349GuthshGO9P9eKmNPgyTJzTtw6FedXrrHV99nC7spaY84e+DqfHGYOzMJDrg8xHDYLLHk5Q2z5TlrztXMbtLhjPKrc2+ZajFFshgE5eowfkutSYxeX8uA5czFNT1ZxmDwX1KIelbqhh6XkMQFJui8v8Eo396/sN3RAQSfvBd7Syhch2vlaMP4FAB11AlMKO2x/1hoKiHBU3oU3OKRTfoUTfy1uH3T+t03k1Qkr0dqgHLxiv6QU5WrarR9tx/dapqbsSmrYapmJ7S5+ghc4FTWxXJB1cjJRh3X+gwJIHjOVW+5ZVqXTG2s2Jwi2daDt6XYeigxgL2SlQpeL5kvXNCcuSJurJVcRZFYUkzVv85XfDauqGxYqaehPcK2TzmcXOUWPfxQxLJd2TrqSiO+mseqqkNTb3ZDiYS/ZqdQoGYIUwJqXo+EDgqlmuWUhkWwCkyo4rtTZeAj+nP00v3n8JmXtO30Fip+lxpfsVR3tO1hk4Vi2kmVjXyRkW2G7D7WAVt+91ahFoSeRWlKyb4KcvGvwUaa43fWLem2hyI4di2pZdr3fcYJ3xvL5ejL3m14bKsfoOv
四、Go语言的特性(重点)
4.1 第一个hello word(详解)
//表示该 hello.go 文件所在的包是 main,在 go 中,
// 每个文件都必须归属于一个包。
package main
//表示:引入一个包,包名 fmt,引入该包后,就可以使用 fmt包的函数,比如: fimt.Println
import "fmt"
// func 是一个关键字,表示一个函数。
// main 是函数名,是一个主函数,即我们程序的入口。
func main() {
//表示调用 fmt 包的函数 Println 输出“hello,world’
fmt.Println("hello,world") //输出hello
}
-
go 文件的后缀是 go
-
package main
表示该 hello.go 文件所在的包是 main,在 go 中,每个文件都必须归属于一个包。 -
import “fmt”
表示:引入一个包,包名 fmt,引入该包后,就可以使用 fmt包的函数,比如: fimt.Println -
func main() {
}
func 是一个关键字,表示一个函数。
main 是函数名,是一个主函数,即我们程序的入口。 -
fmt.Println(“hello”)
表示调用 fmt 包的函数 Println 输出“hello,world’
4.2 开发编译。(重要点 / 面试题)
Go语言的执行流程分析:
说明:两种执行流程的方式区别?
- 如果我们先编译生成了可执行文件(.exe文件),那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行。
- 如果我们是直接 go run go源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。
- 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。
4.3 开发注意事项
Go程序开发注意事项(重点)
- Go源文件以“go”为扩展名。
- Go应用程序的执行入口是main()方法
- Go语言严格区分大小写。
- Go方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这4)也体现出Golang的简洁性。
- Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同个,否则报错
- go语言定义的变量或者import的包如果没有使用到,代码不能编译通过。
- 大括号都是成对出现的,缺一不可。