Go 语言程序错误分为两种:
- error ,程序员可以预料到的,安错误种类加以处理;
- panic ,无法预料到的;
典型原因
引起 panic 的常见操作包括:
- 数组越界访问
- 类型断言失败
- 访问空指针
- 互斥锁错误调用
- 向已关闭的 channel 发送数据
- etc
Go 语言程序错误分为两种:
引起 panic 的常见操作包括:
dig 是 uber 开源的一个依赖注入组件,内部基于反射实现,适用于:
但不适用于以下场景:
开始使用 dig 解决依赖问题前,我们需要先安装,推荐安装主版本 1 :
|
|
Linux 下,推荐通过二进制包部署 Go 语言开发环境。首先,从 Go 官网 下载页面 下载二进制包。
下载完毕后,将压缩包解压到家目录的 opt 目录中,以 1.10.3 版本为例:
|
|
解压完毕后,我们可以看到这些目录和文件:
|
|
其中, Go 语言开发工具就位于 bin 目录下。 尝试运行 go 命令:
|
|
至此, Go 已经安装完毕!但等等! ~/opt/go/bin/go
这是什么鬼?
每个 Go 程序都是由一些包组成的,程序从 main 包中的 main 函数开始执行。
|
|
在这个程序,通过 import 导入两个包, fmt 和 math/rand (包路径)。
Go 语言中,函数可以接受零或多个参数:
|
|
在这个例子中, add 函数接受两个 整型( int )参数。注意到,类型申明紧跟在参数名之后,这跟其他语言有些区别。
var 语句 申明( declare )变量列表; 跟 函数 参数列表一样,类型在最后指定。
var 语句的作用域(可见范围)可以是 包级别 或者 函数级别 。 下面这个例子同时包含这两种级别:
|
|
作用域是啥意思呢?
Go 内置了以下基本类型:
常量( constant )申明与变量一样,只不过换成 const
关键字。常量可以是字符、字符串、布尔,或者数值类型。另外,常量不能使用 :=
语法申明。
|
|
Go 语言只有一种循环结构—— for 循环。
最基本的 for 语句包含 3 部分,以分号 ;
分隔:
|
|
当条件表达式求值为 false
时,循环将停止迭代并退出。