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

Анд*_*нов 2 int formatting file-permissions go

示例代码:

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

文件具有模式0775( -rwxrwxr-x)。像这样运行它:

./主要主要

印刷 509

第二:

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

此代码打印-rwxrwxr-x.

我如何获得格式的模式0775

icz*_*cza 7

该值509是权限位的十进制(基数为 10)表示。

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

perm := 509
fmt.Printf("%o", perm)
Run Code Online (Sandbox Code Playgroud)

输出(在Go Playground上试试):

775
Run Code Online (Sandbox Code Playgroud)

如果您希望输出为 4 位数字(0在这种情况下带有前导),请使用格式字符串"%04o"

fmt.Printf("%04o", perm) // Output: 0775
Run Code Online (Sandbox Code Playgroud)