一、GO语言基础知识
1.简介:
Go语言(又称Golang)是一种由Google开发的静态类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。
2.优点
静态编译,编译好后,扔服务器直接运行。 简单的思想,没有继承,多态,类等。 有丰富的库和详细的开发文档。 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。 拥有简洁的语法,提高开发效率。 简单的交叉编译,仅需更改环境变量。
3.文件名
文件以“.go”结尾
4.命名
go语言变量命名的首字符可以是任意的Unicode字符或者下划线;剩余字符可以是Unicode字符、下划线、数字且字符长度不限
5.GO语言的25个关键字
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
6.GO语言的37个保留字
Constants: true false iota nil
Types: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
Functions: make len cap new append copy close delete
complex real imag
panic recover
7.go语言常用命令
go env用于打印Go语言的环境信息。
go run命令可以编译并运行命令源码文件。
go get可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。
go build命令用于编译我们指定的源码文件或代码包以及它们的依赖包。
go install用于编译并安装指定的代码包及它们的依赖包。
go clean命令会删除掉执行其它命令时产生的一些文件和目录。
go doc命令可以打印附于Go语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。
go test命令用于对Go语言编写的程序进行测试。
go list命令的作用是列出指定的代码包的信息。
go fix会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。
go vet是一个用于检查Go语言源码中静态错误的简单工具。
go tool pprof命令来交互式的访问概要文件的内容。
8.常用运算符
算数运算符:
| 运算符 | 描述 |
|---|---|
| + | 相加 |
| - | 相减 |
| * | 相乘 |
| / | 相除 |
| % | 求余 |
关系运算符:
| 运算符 | 描述 |
|---|---|
| == | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
| != | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
| > | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
| >= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
| < | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
| <= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
逻辑运算符:
| 运算符 | 描述 |
|---|---|
| == | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
| != | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
| > | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
| >= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
| < | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
| <= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
位运算符
位运算符对整数在内存中的二进制位进行操作。
| 运算符 | 描述 |
|---|---|
| & | 参与运算的两数各对应的二进位相与。(两位均为1才为1) |
| l | 参与运算的两数各对应的二进位相或。(两位有一个为1就为1) |
| 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1) | |
| << | 左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
| >> | 右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。 |
赋值运算符
| 运算符 | 描述 |
|---|---|
| = | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
| += | 相加后再赋值 |
| -= | 相减后再赋值 |
| *= | 相乘后再赋值 |
| /= | 相除后再赋值 |
| %= | 求余后再赋值 |
| <<= | 左移后赋值 |
| >>= | 右移后赋值 |
| &= | 按位与后赋值 |
| l= | 按位或后赋值 |
| ^= | 按位异或后赋值 |
9.变量声明
Go语言的变量声明格式为:
var 变量名 变量类型
变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。 举个例子:
var name string
var age int
var isOk bool
10.Go常量
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。
const pi = 3.1415
const e = 2.7182
声明了pi和e这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。
多个常量也可以一起声明:
const (
pi = 3.1415
e = 2.7182
)
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:
const (
n1 = 100
n2
n3
)
上面示例中,常量n1、n2、n3的值都是100。
二、常用特性解析
Go语言,也称为Golang,是一种静态类型、编译型、并发型,并具有垃圾回收功能的编程语言。它源自谷歌的“2009程序员节”项目,旨在提高软件开发效率,并创建易于维护、编译快速的程序。Go语言的常用特性可以从以下几个方面进行解析:
1.基础语法特性
- 标识符与常量:在Go语言中,标识符是区分大小写的。常量是一种只读的数值,它只能被赋值一次,不能修改。
- 变量声明:Go语言的变量声明使用
var关键字,并且可以进行自动类型推断。 - 数据类型:Go语言支持多种数据类型,包括基本类型(
int、float、bool、string)、自定义类型(struct、interface、map、slice)和指针等。 - 函数:函数是Go语言中的基本单位。函数支持嵌套和匿名函数,并且可以返回多个值。定义函数使用
func关键字。
2.并发编程特性
Go语言以其高效的并发处理能力著称,主要得益于以下几个特性:
- 协程(Goroutine) :Goroutine是一种轻量级的线程,使用非常简单,只需在函数调用前加上
go关键字即可创建一个新的Goroutine。Goroutine的启动开销非常小,可以在一个程序中同时运行成千上万个协程,每个协程都是独立运行的,可以并发地执行任务。 - 通道(Channel) :Channel用于Goroutine之间的通信,提供了一种安全的方式来传递数据。使用Channel可以避免共享内存的复杂性和潜在的竞争问题。
3.内存管理特性
- 垃圾回收(Garbage Collection, GC) :Go语言具有内置的垃圾回收机制,能够自动管理内存,避免内存泄漏和悬挂指针的问题。GC运行在后台,不会显著影响程序的性能。Go语言的GC设计目标之一是低延迟,特别适用于需要高并发和低延迟的应用场景。
4.类型安全特性
Go语言通过静态类型系统和严格的类型检查实现了类型安全:
- 静态类型系统:在编译时进行类型检查,能够在程序运行前发现大部分类型错误。所有变量必须有明确的类型声明,编译器会检查类型兼容性。Go语言支持类型推断,使用
:=语法可以在声明变量时推断变量的类型。 - 接口类型:Go语言的接口类型提供了一种灵活的多态机制,允许不同类型实现同一个接口。接口类型的使用增强了代码的可扩展性和可维护性。
5.标准库与生态系统
1). 高效的标准库:Go语言提供了一个丰富且高效的标准库,涵盖了网络编程、文件操作、字符串处理等常见任务。标准库中的net/http包提供了强大的HTTP服务器和客户端功能,简化了网络编程;os包提供了文件读写、目录操作等功能,便于进行文件系统操作;strings包提供了丰富的字符串操作函数,如字符串分割、拼接、替换等。
2). 丰富的第三方库和工具:Go语言的生态系统非常丰富,有许多第三方库和工具可供选择。这些库和工具涵盖了不同的领域和应用场景,包括Web开发、数据处理、科学计算、嵌入式系统等。
6.其他特性
- 跨平台支持:Go语言支持跨平台,开发者可以在Windows、Linux、macOS等不同操作系统上编写和运行Go程序。这使得开发者可以快速地在不同的平台上开发和测试应用程序。
- 简洁性:Go语言的设计简洁、直观,注重代码的可读性和易于理解。它摒弃了一些复杂的语法和概念,减少了程序员的学习和维护成本。
综上所述,Go语言以其并发性、垃圾回收、类型安全、高效的标准库和跨平台支持等特性,成为现代编程语言中的佼佼者。这些特性使得Go语言在Web开发、云计算、系统编程等领域都有广泛的应用。