1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00

Merge pull request #43 from qichengzx/master

fix代码错误
This commit is contained in:
chai2010 2018-01-10 22:30:41 +08:00 committed by GitHub
commit e722469fa7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,7 +8,7 @@
```go
if v, ok := m["key"]; ok {
return value
return v
}
```
@ -66,7 +66,7 @@ func CopyFile(dstName, srcName string) (written int64, err error) {
}
```
上面的代码虽然能够工作但是隐藏一个bug。如果第`os.Open`调用失败,那么会在没有释放`src`文件资源的情况下返回。虽然我们可以通过在第二个返回语句前添加`src.Close()`调用来修复这个BUG但是当代码变得复杂时类似的问题将很难被发现和修复。我们可以通过`defer`语句来确保每个被正常打开的文件都能被正常关闭:
上面的代码虽然能够工作但是隐藏一个bug。如果第`os.Open`调用失败,那么会在没有释放`src`文件资源的情况下返回。虽然我们可以通过在第二个返回语句前添加`src.Close()`调用来修复这个BUG但是当代码变得复杂时类似的问题将很难被发现和修复。我们可以通过`defer`语句来确保每个被正常打开的文件都能被正常关闭:
```go
func CopyFile(dstName, srcName string) (written int64, err error) {