在使用OpenFileGo 的 os 包中的函数时,管道字符的具体用途是什么?
例子:
os.OpenFile("foo.txt", os.O_RDWR|os.O_APPEND, 0660)
它是否符合逻辑OR?如果是这样,Go 会选择第一个“真实”的吗?由于这些标志所代表的常量,它们的核心只是用十六进制编写的整数,在编译时,Go 如何选择应用哪个标志?
毕竟,如果函数调用的数量最多,os.O_APPEND将优先于所有其他传入的标志,如下所示:
os.O_RDWR == syscall.O_RDWR == 0x2 == 2
os.O_APPEND == syscall.O_APPEND == 0x400 == 1024
os.O_CREATE == syscall.O_CREAT == 0x40 == 64
更新 1
要跟进下面的评论,如果我有一个按位运算符计算os.O_APPEND|os.O_CREATE,如果文件存在,是否会使用该错误,或者只是根据需要创建/附加?
更新 2
我的问题是两方面的,一是了解按位运算符的目的,我现在了解它更多地用作位掩码操作;第二,如何将os.OpenFile()函数用作创建或附加操作。在我的游戏中,我发现以下组合效果最好:
file, _ := os.OpenFile("foo.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0660)
file.WriteString("Hello World\n")
file.Sync()
这是正确的方法还是有更简洁的方法来做到这一点?
UYOU
慕沐林林
相关分类