• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go语言知识点

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

目录

一、Go语言特色... 5

1.1 Go 语言用途... 5

1.2 Go语言结构... 5

实例... 5

二、基础语法... 6

2.1 Go 标记... 6

2.2 行分隔符... 6

2.3注释... 6

2.4标识符... 7

2.5 字符串连接... 7

实例... 7

2.6 关键字... 7

2.7 语言的空格... 8

三、数据类型... 8

3.1 布尔型... 9

3.2 数字类型... 9

3.3 字符串类型... 9

3.4派生类型... 9

3.5数字类型... 9

3.6 浮点型... 10

3.7 其他数字类型... 11

四、Go语言变量... 11

4.1 变量声明格式... 11

4.2 多变量声明... 12

五、go语言常量... 13

5.1 常量格式... 13

实例... 14

5.2 iota特殊常量... 14

5.2.1 iota 用法... 15

六、Go 语言运算符... 20

6.1算术运算符... 20

实例... 21

6.2关系运算符... 22

实例... 22

6.3逻辑运算符... 23

实例... 24

6.4 位运算符... 25

实例... 26

6.5 赋值运算符... 27

实例... 28

6.6其他运算符... 29

实例... 29

6.7运算符优先级... 30

实例... 30

七、Go 语言条件语句... 31

7.1 条件语句的结构... 31

7.2 if 语句... 32

语法... 32

实例... 33

7.3 if...else 语句... 34

语法... 34

实例... 34

7.4 if 语句嵌套... 35

语法... 35

实例... 35

7.5 switch 语句... 36

语法... 36

实例... 37

7.5.1 Type Switch. 38

7.5.2 fallthrough. 39

7.6 select 语句... 40

语法... 41

实例... 41

八、Go 语言循环语句... 42

8.1 循环结构图... 42

8.1.1 for 循环... 43

8.1.2 循环嵌套... 46

8.2 循环控制语句... 47

8.2.1 break 语句... 47

8.2.2 continue 语句... 49

8.2.3 goto 语句... 50

8.3 无限循环... 52

实例... 52

九、Go 语言函数... 52

9.1 函数定义... 53

实例... 53

9.2 函数调用... 54

实例... 54

9.3 函数返回多个值... 55

实例... 55

9.4 函数参数... 55

9.4.1函数值传递值... 56

9.4.2 函数引用传递值... 57

9.5 函数用法... 58

9.5.1 函数作为实参... 58

9.5.2函数闭包... 59

9.5.3 函数方法... 60

十、Go 语言变量作用域... 61

10.1 变量可声明的地方... 61

10.2 局部变量... 61

实例... 61

10.3 全局变量... 62

实例... 62

实例... 63

10.4 形式参数... 63

实例... 63

10.5初始化局部和全局变量... 64

十一、Go 语言数组... 64

11.1 数组的定义... 64

11.2 声明数组... 65

11.3 初始化数组... 65

11.4 访问数组元素... 66

实例... 66

11.5多维数组... 67

11.5.1二维数组... 67

11.5.2初始化二维数组... 67

11.5.3 访问二维数组... 68

11.6向函数传递数组... 69

11.6.1方式一... 69

11.6.2方式二... 69

十二、Go 语言指针... 71

12.1 什么是指针... 72

12.2 如何使用指针... 72

12.2.1指针使用流程... 72

实例... 73

12.3 Go空指针... 73

12.4 Go 语言指针数组... 74

12.5 Go 语言指向指针的指针... 75

12.5.1 指向指针的指针变量声明格式... 76

12.6 Go 语言指针作为函数参数... 76

实例... 77

十三、Go 语言结构体... 78

13.1定义结构体... 78

13.2 访问结构体成员... 79

实例... 79

13.3结构体作为函数参数... 80

实例... 80

13.4 结构体指针... 82

实例... 82

十四、Go 语言切片(Slice) 83

14.1定义切片... 84

14.2 切片初始化... 84

14.3 len() 和 cap() 函数... 84

14.4 空(nil)切片... 85

实例... 85

14.5 切片截取... 86

实例... 86

12.4 append() 和 copy() 函数... 87

实例... 87

十五、Go 语言范围(Range) 88

实例... 88

十六、Go 语言Map(集合) 89

16.1 定义 Map. 89

实例... 90

16.2 delete() 函数... 91

实例... 91

十七、Go 语言递归函数... 92

17.1 语法格式... 92

17.2 阶乘... 92

实例... 92

17.3 斐波那契数列... 93

实例... 93

十八、Go 语言类型转换... 94

18.1 语言转换格式... 94

实例... 94

十九、Go 语言接口... 95

实例... 95

实例... 95

二十、Go 错误处理... 96

实例... 97

二十一、Go 并发... 98

21.1 语法格式... 99

实例... 99

21.2 通道(channel)... 100

实例... 100

21.3通道缓冲区... 101

实例... 101

21.4 Go 遍历通道与关闭通道... 102

实例... 102

 

 

一、Go语言特色

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

简洁、快速、安全

并行、有趣、开源

内存管理、数组安全、编译迅速

1.1 Go 语言用途

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其他语言有更高的开发效率

 

1.2 Go语言结构

有以下基础部分组成:

包声明

引入包

函数

变量

语句 & 表达式

注释

 

实例

package main

import "fmt"

func main() {
   /* 这是我的第一个简单的程序 */
   fmt.Println("Hello, World!")
}

 

 

二、基础语法

2.1 Go 标记

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:

fmt.Println("Hello, World!")

6 个标记是(每行一个)

1. fmt

2. .

3. Println

4. (

5. "Hello, World!"

6. )


2.2 行分隔符

Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。

以下为两个语句:

fmt.Println("Hello, World!")
fmt.Println("菜鸟教程:runoob.com")

 

2.3注释

注释不会被编译,每一个包应该有相关注释。

单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。如:

// 单行注释

/*

 Author by 菜鸟

 我是多行注释

 */


2.4标识符

标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~Za~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。

以下是有效的标识符:

mahesh   kumar   abc   move_name   a_123

myname50   _temp   j   a23b9   retVal

以下是无效的标识符:

  • 1ab(以数字开头)
  • caseGo 语言的关键字)
  • a+b(运算符是不允许的)

 

2.5 字符串连接

Go 语言的字符串可以通过 + 实现:

实例

package main
import "fmt"
func main() {
    fmt.Println("Google" + "Runoob")
}

以上实例输出结果为:

GoogleRunoob

 

2.6 关键字

Go的关键字或保留字

除以上还有36个标识符

程序一般由关键字、常量、变量、运算符、类型和函数组成。

程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}

程序中可能会使用到这些标点符号:.,;:

 

2.7 语言的空格

Go 语言中变量的声明必须使用空格隔开,如:

var age int;

语句中适当使用空格能让程序更易阅读。

无空格:

fruit=apples+oranges;

在变量与运算符间加入空格,程序看起来更加美观,如:

fruit = apples + oranges;

Go语言变量的声明必须以空格隔开 例:var  age int;

 

三、数据类型

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

 

3.1 布尔型

值只可以是常量truefalse 例:var yan bool = true

3.2 数字类型

整型 int 和浮点型 float32float64Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。

3.3 字符串类型


字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本

 

3.4派生类型


包括:

(a) 指针类型(Pointer)

(b) 数组类型

(c) 结构化类型(struct)

(d) Channel 类型

(e) 函数类型

(f) 切片类型

(g) 接口类型(interface)

(h) Map 类型

 

3.5数字类型

  • 序号

类型和描述

1

uint8
无符号 8 位整型 (0 255)

2

uint16
无符号 16 位整型 (0 65535)

3

uint32
无符号 32 位整型 (0 4294967295)

4

uint64
无符号 64 位整型 (0 18446744073709551615)

5

int8
有符号 8 位整型 (-128 127)

6

int16
有符号 16 位整型 (-32768 32767)

7

int32
有符号 32 位整型 (-2147483648 2147483647)

8

int64
有符号 64 位整型 (-9223372036854775808 9223372036854775807)

3.6 浮点型

序号

类型和描述

1

float32
IEEE-754 32位浮点型数

2

float64
IEEE-754 64位浮点型数

3

complex64
32 位实数和虚数

4

complex128
64 位实数和虚数


3.7 其他数字类型

以下列出了其他更多的数字类型:

序号

类型和描述

1

byte
类似 uint8

2

rune
类似 int32

3

uint
32 64

4

int
uint 一样大小

5

uintptr
无符号整型,用于存放一个指针

 

四、Go语言变量

4.1 变量声明格式

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

声明变量的一般形式是使用 var 关键字:

第一种:如果变量没出始化,默认值为0,格式:

var 变量名 数据类型(typevar 变量名1, 变量名2 数据类型(type

第二种:根据值自行判定变量类型,格式:

Var 变量名 = value()

第三种:省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误,格式:

变量名 := value

 

4.2 多变量声明

//类型相同多个变量, 非全局变量

var 变量1, 变量2, 变量3  类型

变量1, 变量2, 变量3 = 值1, 值2, 值3

 

var 变量1, 变量2, 变量3 =值1, 值2, 值3 // 和 python 很像,不需要显示声明类型,自动推断

 

变量1, 变量2, 变量3 := 值1, 值2, 值3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误

 

 

// 这种因式分解关键字的写法一般用于声明全局变量

var (

变量1 类型1

变量2 类型2


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
08_Go语言(指针)发布时间:2022-07-10
下一篇:
VSCode 运行go test显示打印日志发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap