chapter2
- for range 返回的第二个值为遍历元素的副本
- 未使用的局部变量编译出错
- interface如果只有一个方法,推荐er结尾的命名方式.
- 对于任意receiver都可以调用,编译器自己解引用或引用,但是在interface实现区分
GoInAction 第二章学习之后自己将例子写了一遍并稍加修改.比如将结果写到文件中.其中遇到一些问题.
文件处理
|
|
这个方法可以用来打开或者创建文件.不过需要给flag配以相应的值.比如os.O_CREATE|os.O_APPEND|os.O_WRONLY
这就是存在文件则追加写,没有则创建文件.最后的os.O.WRONLY
则是赋予只写模式.其中在这个过程中还遇到一个问题.提示bad file descriptor
这个错误.这个在Stackoverflow找到了解释,其实就和上面写的一样,创建就要给予os.O_CREATE
,读写自然就要给予os.O_RDWR
Mode.
还有就是在go doc的时候看到说 most users will use Open or Create instead
这边则是用到的下面2个方法:
这个实际相当与os.OpenFile
中以os.O_RDONLY返回文件
|
|
这个则是以0666的权限创建文件.flag则是O_RDWR|O_CREATE|O_TRUNC
.这里则是读写权限,文件不存在则创建.重要的是os.O_TRUNC
.如果文件存在他会将已有的文件清空然后返回文件.这里就需要配合判断文件是否存在
|
|
|
|
至于err == nil
这段则是因为
这里我写的时候就犯过错,我都是直接go doc
看方法以及接口文档的,加上我英文其实不太好,
就犯错了.
学习过程中的例子我也放到GitHub上了.当然GoInAction的示例代码更加完整