-
Go语言宕机(panic)——程序停止运行
所属栏目:[语言] 日期:2023-06-26 热度:7490
Go语言的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,如数组访问越界、空指针引用等,这些运行时错误会引起宕机。
宕机不是一件很好的事情,可能造成体验停止、服务中断,就像没有人希望在取钱[详细] -
Go语言处理运行时故障
所属栏目:[语言] 日期:2023-06-26 热度:4453
Go语言的错误处理思想及设计包含以下特征:
一个可能造成错误的函数,需要返回值中返回一个错误接口(error),如果调用是成功的,错误接口将返回 nil,否则返回错误。
在函数调用后需要检查错误,如果发生错误,则[详细] -
Go语义顺序函数
所属栏目:[语言] 日期:2023-06-26 热度:2737
很对编程语言都支持递归函数,Go语言也不例外,所谓递归函数指的是在函数内部调用函数自身的函数,从数学解题思路来说,递归就是把一个大问题拆分成多个小问题,再各个击破,在实际开发过程中,递归函数可以解决许多[详细]
-
Go语言defer(缓冲执行语句)
所属栏目:[语言] 日期:2023-06-26 热度:5154
Go语言的 defer 语句会将其后面跟随的语句进行延迟处理,在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。[详细]
-
基于 Go的可变参数和函数的计算方法
所属栏目:[语言] 日期:2023-06-26 热度:5214
在C语言时代大家一般都用过 printf() 函数,从那个时候开始其实已经在感受可变参数的魅力和价值,如同C语言中的 printf() 函数,Go语言标准库中的 fmt.Println() 等函数的实现也依赖于语言的可变参数功能。
本节我[详细] -
Go语言闭包(Closure)——采用了外部变量的匿名函数
所属栏目:[语言] 日期:2023-06-26 热度:2197
Go语言中闭包是引用了自由变量的函数,被引用的自由变量和函数一同存在,即使已经离开了自由变量的环境也不会被释放或者删除,在闭包中可以继续使用这个自由变量,因此,简单的说:
函数 + 引用环境 = 闭包
同一[详细] -
Go语言函数类型实现接口——将函数用为接口来调用
所属栏目:[语言] 日期:2023-06-26 热度:1729
函数和其他类型一样都属于“一等公民”,其他类型能够实现接口,函数也可以,本节将对结构体与函数实现接口的过程进行对比。
首先给出本节完整的代码:
package main
import (
"fmt"
)
// 调用[详细] -
Go语言匿名函数——不具有函数名字的函数
所属栏目:[语言] 日期:2023-06-26 热度:2449
Go语言支持匿名函数,即在需要使用函数时再定义函数,匿名函数没有函数名只有函数体,函数可以作为一种类型被赋值给函数类型的变量,匿名函数也往往以变量方式传递,这与C语言的回调函数比较类似,不同的是,Go语言支[详细]
-
Go语言 function变量:将函数保存为变量,即一个值
所属栏目:[语言] 日期:2023-06-26 热度:7251
在Go语言中,函数也是一种类型,可以和其他类型一样保存在变量中,下面的代码定义了一个函数变量 f,并将一个函数名为 fire() 的函数赋给函数变量 f,这样调用函数变量 f 时,实际调用的就是 fire() 函数,代码如下:[详细]
-
Go语言函数声明(函数意义)
所属栏目:[语言] 日期:2023-06-26 热度:2006
函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块。
因为Go语言是编译型语言,所以函数[详细] -
Go语言break(从循环跳出)
所属栏目:[语言] 日期:2023-06-24 热度:9468
Go语言中 break 语句可以结束 for、switch 和 select 的代码块,另外 break 语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch 和 select 的代码块上。
跳出指[详细] -
Go语言goto语句——跳到所指定的标签
所属栏目:[语言] 日期:2023-06-24 热度:2016
使用 goto 退出多层循环
下面这段代码在满足条件时,需要连续退出两层循环,使用传统的编码方式如下:
package main
import "fmt"
func main() {
var breakAgain bool
// 外循环
for x := 0; x <[详细] -
Go语言switch case句子
所属栏目:[语言] 日期:2023-06-24 热度:7965
Go语言的 switch 要比C语言的更加通用,表达式不需要为常量,甚至不需要为整数,case 按照从上到下的顺序进行求值,直到找到匹配的项,如果 switch 没有表达式,则对 true 进行匹配,因此,可以将 if else-if else 改[详细]
-
用于键值循环的 Go语言
所属栏目:[语言] 日期:2023-06-24 热度:529
for range 结构是Go语言特有的一种的迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map 及通道(channel),for range 语法上类似于其它语言中的 foreach 语句,一般形式为:
for key,[详细] -
Go语言for(循环方式)
所属栏目:[语言] 日期:2023-06-24 热度:3161
与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近:
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
可以[详细] -
Go语言if else(分支构造)
所属栏目:[语言] 日期:2023-06-24 热度:7290
在Go语言中,关键字 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号{}括起来的代码块,否则就忽略该代码块继续执行后续的代码。
if condition {
// do something
}[详细] -
Go语言 nil:没有或无值
所属栏目:[语言] 日期:2023-06-24 热度:6945
在Go语言中,布尔类型的零值(初始值)为 false,数值类型的零值为 0,字符串类型的零值为空字符串"",而指针、切片、映射、通道、函数和接口的零值则是 nil。
nil 是Go语言中一个预定义好的标识符,有过其他编程[详细] -
Go语言list(表格)
所属栏目:[语言] 日期:2023-06-24 热度:7393
列表是一种非连续的存储容器,由多个节点组成,节点通过一些变量记录彼此之间的关系,列表有多种实现方法,如单链表、双链表等。
列表的原理可以这样理解:假设 A、B、C 三个人都有电话号码,如果 A 把号码告诉给[详细] -
Go语言sync.Map(用于并发环境中使用的map)
所属栏目:[语言] 日期:2023-06-24 热度:4224
Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。
下面来看下并发情况下读写 map 时会出现的问题,代码如下:
// 创建一个int到int的映射
m := make(map[int]int)
// 开启一段并发代[详细] -
Go语言map(访问路径中的每一个键值对)
所属栏目:[语言] 日期:2023-06-24 热度:625
map 的遍历过程使用 for range 循环完成,代码如下:
scene := make(map[string]int)
scene["route"] = 66
scene["brazil"] = 4
scene["china"] = 960
for k, v := range scene {
fmt.Println(k, v)
}
遍[详细] -
Go语言地图 (Go语言映射)
所属栏目:[语言] 日期:2023-06-23 热度:740
Go语言中 map 是一种特殊的数据结构,一种元素对(pair)的无序集合,pair 对应一个 key(索引)和一个 value(值),所以这个结构也称为关联数组或字典,这是一种能够快速寻找值的理想结构,给定 key,就可以迅速找[详细]
-
Go语言多维切片介绍
所属栏目:[语言] 日期:2023-06-23 热度:1121
Go语言中同样允许使用多维切片,声明一个多维数组的语法格式如下:
var sliceName [][]...[]sliceType
其中,sliceName 为切片的名字,sliceType为切片的类型,每个[ ]代表着一个维度,切片有几个维度就需要几个[详细] -
Go语言range关键字:循环更新切片
所属栏目:[语言] 日期:2023-06-23 热度:573
通过前面的学习我们了解到切片其实就是多个相同类型元素的连续集合,既然切片是一个集合,那么我们就可以迭代其中的元素,Go语言有个特殊的关键字 range,它可以配合关键字 for 来迭代切片里的每一个元素,如下所示:[详细]
-
Go语言从切片中清除元素
所属栏目:[语言] 日期:2023-06-23 热度:7152
Go语言并没有对删除切片元素提供专用的语法或者接口,需要使用切片本身的特性来删除元素,根据要删除元素的位置有三种情况,分别是从开头位置删除、从中间位置删除和从尾部删除,其中删除切片尾部的元素速度最快。[详细]
-
Go语言复制():切片复制(切片拷贝)
所属栏目:[语言] 日期:2023-06-23 热度:8738
Go语言的内置函数 copy() 可以将一个数组切片复制到另一个数组切片中,如果加入的两个数组切片不一样大,就会按照其中较小的那个数组切片的元素个数进行复制。
copy() 函数的使用格式如下:
copy( destSlice, sr[详细]
