首先,放上 Golang标准库文档,写Go语言时可以放在手边,随时查阅。
range map无序的问题
首先是第一个问题,在go语言中,使用range遍历是很常见的操作,但对于map,用range遍历是无序的。如果想有序遍历map,需要用slice存储有序的key序列,然后根据key去查找map中的value。
os.OpenFile不会自动清空文件的问题
使用os.OpenFile时可以指定文件打开方式:
os.O_RDONLY //只读
os.O_WRONLY //只写
os.O_RDWR //读写文件
os.O_APPEND //追加文件
os.O_CREATE //不存在时创建文件
os.O_TRUNC //打开时清空文件
对于写文件,默认是覆盖文件进行写的,但不会默认清空。
这句话怎么理解呢?如果文件中原本就有数据“aabbcc”,然后你重新OpenFile,然后写入"bb",那么文件中的内容会变成“bbbbcc”。
这就是所谓的,默认覆盖写,但不会进行清空。如果需要覆盖写且清空文件,需要添加os.O_TRUNC
:
os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0777)