首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
误用短声明导致变量覆盖
误用字符串
发生错误时使用defer关闭一个文件
不需要将一个指向切片的指针传递给函数
使用指针指向接口类型
使用值类型时误用指针
误用协程和通道
闭包和协程的使用
糟糕的错误处理
关于逗号ok模式
defer 模式
可见性模式
运算符模式和接口
字符串
数组和切片
映射
结构体
接口
函数
文件
协程(goroutine)与通道(channel)
网络和网页应用
其他
出于性能考虑的最佳实践和建议
项目简介
短网址项目简介
数据结构和前端界面
用户界面:web 服务端
添加持久化存储
添加协程
用 JSON 持久化存储
分布式程序
使用代理缓存
总结和增强
什么是 Google App Engine?
云上的 Go
安装 Go App Engine SDK:为 Go 部署的开发环境
建造你自己的 Hello world 应用
使用用户服务和探索其 API
处理窗口
使用数据存储
上传到云端
Heroku:一个使用 Go 的高度可用一致数据存储
MROffice:一个使用 Go 的呼叫中心网络电话 (VOIP) 系统
Atlassian:一个虚拟机群管理系统
Camilistore:一个可寻址内容存储系统
Go 语言的其他应用
当前位置:
首页>>
技术小册>>
go编程权威指南(四)
小册名称:go编程权威指南(四)
```go var remember bool = false if something { remember := true //错误 } // 使用remember ``` 在此代码段中,`remember` 变量永远不会在 `if` 语句外面变成 `true`,如果 `something` 为 `true`,由于使用了短声明 `:=`,`if` 语句内部的新变量 `remember` 将覆盖外面的 `remember` 变量,并且该变量的值为 `true`,但是在 `if` 语句外面,变量 `remember` 的值变成了 `false`,所以正确的写法应该是: ```go if something { remember = true } ``` 此类错误也容易在 `for` 循环中出现,尤其当函数返回一个具名变量时难于察觉,例如以下的代码段: ```go func shadow() (err error) { x, err := check1() // x 是新创建变量,err 是被赋值 if err != nil { return // 正确返回 err } if y, err := check2(x); err != nil { // y 和 if 语句中 err 被创建 return // if 语句中的 err 覆盖外面的 err,所以错误的返回 nil ! } else { fmt.Println(y) } return } ```
下一篇:
误用字符串
该分类下的相关小册推荐:
深入浅出Go语言核心编程(四)
Go语言从入门到实战
Golang并发编程实战
GO面试指南
深入浅出Go语言核心编程(二)
go编程权威指南(三)
企业级Go应用开发从零开始
深入解析go语言
深入浅出Go语言核心编程(五)
从零写一个基于go语言的Web框架
go编程权威指南(二)
Golang修炼指南