上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 53 下一页
摘要: 宕机恢复(recover)——防止程序崩溃 无论是代码运行错误由 Runtime 层抛出的 panic 崩溃,还是主动触发的 panic 崩溃,都可以配合 defer 和 recover 实现错误捕捉和恢复,让代码在发生崩溃后允许继续运行。 提示: 在其他语言里,宕机往往以一场的形式存在,底层抛出一 阅读全文
posted @ 2022-05-28 23:12 左扬 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 宕机(panic)——程序终止运行 一、手动触发宕机 Go 语言可以在程序中手动触发宕机,让程序崩溃,这样开发者可以及时地发现错误,同时减少可能的损失。 Go 语言程序在宕机时,会将堆栈和goroutine信息输出到控制台,所以宕机也可以方便地知晓发生错误的位置。 如何触发宕机呢? package 阅读全文
posted @ 2022-05-28 22:39 左扬 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 在解析中使用自定义错误 使用 error.New 定义的错误字符串的错误类型是无法提供丰富的错误信息的。那么,如果需要携带错误信息返回,就需要借助自定义结构体实现错误接口。 下面代码将实现一个错误解析(ParseError),这种错误包含两个内容:文件名和行号。解析错误的结构还实现了 error 接 阅读全文
posted @ 2022-05-28 18:32 左扬 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 处理运行时发生的错误 Go 语言的错误处理思想及设计包含以下特征: 一个可能造成错误的函数,需要返回值中翻译个错误接口(error)。如果调用是成功的,错误接口返回nil,否则返回错误。 在函数调用后需要检查错误,如果发生错误,进行必要的错误处理。 一、net包中的例子 net.Dial()是 Go 阅读全文
posted @ 2022-05-28 16:25 左扬 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 可变参数——参数数量不固定的函数形式 Go 语言支持可变参数特性,函数声明和调用时没有固定数量的参数,同时也提供了一套方法进行可变参数的多级传递。 Go 语言的可变参数格式如下: func 函数名(固定参数列表, v...T)(返回参数列表){ 函数体 } 特性如下: 可变参数一般被放置在函数列表的 阅读全文
posted @ 2022-05-28 15:49 左扬 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 示例:闭包实现生成器 闭包的记忆效应进程被用于实现类似设计模式中工厂模式的生成器。 下面我们创建一个玩家生成器的过程。 package main import "fmt" //创建一个玩家生成器,输入名称,输出生成器 func playerGen(name string) func() (strin 阅读全文
posted @ 2022-05-28 14:48 左扬 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 示例:闭包的记忆效应 闭包对它作用域上部变量的引用可以进行修改,修改运用的变量就会对变量进行实际修改。 被捕获到闭包中的变量让闭包本身拥有了记忆效应,闭包中的逻辑可以修改闭包捕获的变量,变量会跟随闭包声明周期一直存在,闭包本身就如同变量一样拥有了记忆效应。 package main import " 阅读全文
posted @ 2022-05-28 14:36 左扬 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 热加载更新配置 在 Prometheus 的日常维护中,一定会对配置文件 prometheus.yml 进行再编辑操作,通常对 Prometheus 服务进行重启操作即可完成对配置文件的加载。 当然也可以通过动态的热加载来更新 prometheus.yml 中的配置信息,一般热加载有两种方法: 查看 阅读全文
posted @ 2022-05-25 17:34 左扬 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 闭包(Closure)——引用了外部变量的匿名函数 闭包是引用了自由变量的函数,被引用的自由变量和函数一同存在,即使已经离开了自由变量的环境也不会被释放或者删除,在闭包中可以继续使用这个自由变量。因此,简单的说: 函数+引用环境=闭包 同一个函数与不同引用环境组合,可以形成不同的实例,如下图: 一个 阅读全文
posted @ 2022-05-17 00:50 左扬 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 函数类型实现接口(把函数作为接口来调用) 函数和其他类型一样都属于 "一等公民",其他类型能够实现接口,函数也可以。 我们对比下结构体和函数实现接口的过程。 先实现一个接口: //调用器接口 type Invoker interface { //需要实现一个 Call() 方法 Call(inter 阅读全文
posted @ 2022-05-16 23:58 左扬 阅读(256) 评论(0) 推荐(1) 编辑
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 53 下一页
levels of contents