重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
当一个函数调用返回一个错误时,调用者应当负责检查错误并采取合适的处理应对。根据情形,将有许多可能的处理场景。接下来我们看 5 个策略:
为企业提供网站设计制作、做网站、网站优化、营销型网站建设、竞价托管、品牌运营等营销获客服务。成都创新互联公司拥有网络营销运营团队,以丰富的互联网营销经验助力企业精准获客,真正落地解决中小企业营销获客难题,做到“让获客更简单”。自创立至今,成功用技术实力解决了企业“网站建设、网络品牌塑造、网络营销”三大难题,同时降低了营销成本,提高了有效客户转化率,获得了众多企业客户的高度认可!
Go 语言的错误处理有特定的规律。进行错误检查之后,检测到失败的情况往往都在成功之前。如果检测到的失败导致函数返回,成功的逻辑一般不会放在 else 块中而是在外层的作用域中。函数会有一种通常的形式,就是在开头有一连串的检查来返回错误,之后跟着实际的函数体一直到最后。
go语言 一个主package包引入同级目录下go文件包编译出错是设置错误造成的,解决方法为:
1、先使用import "strings"导入strings库。
2、HasPrefix 判断字符串 s 是否以 prefix 开头。
3、HasSuffix 判断字符串 s 是否以 suffix 结尾。
4、可以看看判断的代码。
5、在cmd下运行一下go run test.go,看看如下结果。
6、Contains 判断字符串 s 是否包含 substr,也就是判断一下S是否在strings中。
7、在cmd下运行go run test.go看看结果。
使用文件名作为输入
另一个常见错误是将文件名传递给函数。
假设我们必须实现一个函数来计算文件中的空行数。最自然的实现是这样的:
filename 作为输入给出,所以我们打开它然后我们实现我们的逻辑,对吧?
现在,假设我们希望在此函数之上实现 单元测试 ,以使用普通文件,空文件,具有不同编码类型的文件等进行测试。很容易变得非常难以管理。
此外,如果我们想要实现相同的逻辑但是对于HTTP主体,例如,我们将不得不为此创建另一个函数。
Go有两个很棒的抽象: io.Reader 和 io.Writer 。相反,通过一个文件名,我们可以简单地传递一个 io.Reader 作为 抽象 的数据源。
它是文件吗?一个HTTP正文?字节缓冲区?这并不重要,因为我们仍然会使用相同的 Read 方法。
在我们的例子中,我们甚至可以缓冲输入以逐行读取它。所以,我们可以使用 bufio.Reader 它的 ReadLine 方法:
现在,打开文件本身的责任委托给 count 客户:
使用第二种实现,无论 实际数据源 如何,都可以调用该函数。同时,它将 促进 我们的单元测试,因为我们可以简单地创建一个 bufio.Reader 来自 string :
翻译自: