diff --git a/zh/02.7.md b/zh/02.7.md index 36c59c24..9f4657b7 100644 --- a/zh/02.7.md +++ b/zh/02.7.md @@ -110,6 +110,8 @@ channel通过操作符`<-`来接收和发送数据 fmt.Println(<-c) fmt.Println(<-c) } + //修改为1报如下的错误: + //fatal error: all goroutines are asleep - deadlock! ## Range和Close 上面这个例子中,我们需要读取两次c,这样不是很方便,Go考虑到了这一点,所以也可以通过range,像操作slice或者map一样操作缓存类型的channel,请看下面的例子 diff --git a/zh/05.1.md b/zh/05.1.md index 2a87bd99..7c7d206f 100644 --- a/zh/05.1.md +++ b/zh/05.1.md @@ -1,5 +1,5 @@ # 5.1 database/sql接口 -Go与PHP不同的地方是Go没有官方提供数据库驱动,而是为开发者开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,这样做有一个好处,只要按照标准接口开发的代码, 以后需要迁移数据库时,不需要任何修改。那么Go都定义了哪些标准接口呢?让我们来详细的分析一下 +Go与PHP不同的地方是Go官方没有提供数据库驱动,而是为开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,这样做有一个好处,只要是按照标准接口开发的代码, 以后需要迁移数据库时,不需要任何修改。那么Go都定义了哪些标准接口呢?让我们来详细的分析一下 ## sql.Register 这个存在于database/sql的函数是用来注册数据库驱动的,当第三方开发者开发数据库驱动时,都会实现init函数,在init里面会调用这个`Register(name string, driver driver.Driver)`完成本驱动的注册。