mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:34:15 +08:00
update
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
|
||||
最佳实践:对比以下使用方式:
|
||||
|
||||
- 使用正确的方式初始化一个`map[type]slice`(参考[8.1.3小节](08.1.md))
|
||||
- 使用正确的方式初始化一个元素是切片的映射,例如`map[type]slice`(参考[8.1.3小节](08.1.md))
|
||||
- 一直使用逗号,ok或者checked形式作为类型断言(参考[11.3小节](11.3.md))
|
||||
- 使用一个工厂函数创建并初始化自己定义类型(参考[10.2小节](10.2.md)-[18.4小节](18.4.md))
|
||||
- 仅当一个结构体的方法想改变结构体时,使用结构体指针作为方法的接受者,否则使用一个结构体值类型[10.6.3小节](10.6.md)
|
||||
@@ -26,5 +26,5 @@
|
||||
## 链接
|
||||
|
||||
- [目录](directory.md)
|
||||
- 上一章:[使用SMTP(简单邮件传输协议 Simple Message Transfer Protocol)发送邮件](15.12.md)
|
||||
- 上一章:[使用SMTP(简单邮件传输协议)发送邮件](15.12.md)
|
||||
- 下一节:[误用短声明导致变量覆盖](16.1.md)
|
@@ -3,7 +3,7 @@
|
||||
```go
|
||||
var remember bool = false
|
||||
if something {
|
||||
remember := true //错误
|
||||
remember := true //错误
|
||||
}
|
||||
// 使用remember
|
||||
```
|
||||
@@ -12,7 +12,7 @@ remember := true //错误
|
||||
|
||||
```go
|
||||
if something {
|
||||
remember = true
|
||||
remember = true
|
||||
}
|
||||
```
|
||||
|
||||
@@ -21,16 +21,16 @@ remember = true
|
||||
|
||||
```go
|
||||
func shadow() (err error) {
|
||||
x, err := check1() // x是新创建变量,err是被赋值
|
||||
x, err := check1() // x是新创建变量,err是被赋值
|
||||
if err != nil {
|
||||
return // 正确返回err
|
||||
return // 正确返回err
|
||||
}
|
||||
if y, err := check2(x); err != nil { // y和if语句中err被创建
|
||||
return // if语句中的err覆盖外面的err,所以错误的返回nil!
|
||||
return // if语句中的err覆盖外面的err,所以错误的返回nil!
|
||||
} else {
|
||||
fmt.Println(y)
|
||||
fmt.Println(y)
|
||||
}
|
||||
return
|
||||
return
|
||||
}
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user