如何将文件模式转换为 int?

How to convert filemode to int?

示例代码:

func main() {
    p, _ := os.Open(os.Args[1])
    m, _ := p.Stat()
    println(m.Mode().Perm())
}

文件的模式为 0775 (-rwxrwxr-x)。 运行 喜欢:

./main main

打印 509

第二个:

func main() {
    p, _ := os.Open(os.Args[1])
    m, _ := p.Stat()
    println(m.Mode().Perm().String())
}

此代码打印 -rwxrwxr-x.

如何获得 0775 格式的模式?

509 是权限位的十进制(基数 10)表示形式。

形式0775是八进制表示法(基数为8)。您可以使用 %o 动词以八进制表示形式打印数字:

perm := 509
fmt.Printf("%o", perm)

输出(在 Go Playground 上尝试):

775

如果您希望输出为 4 位数字(在本例中带有前导 0),请使用格式字符串 "%04o":

fmt.Printf("%04o", perm) // Output: 0775