golang将os.ModePerm转换为字符串

时间:2019-06-03 20:55:26

标签: string go

我希望文件的权限表示形式为string。 这是我想做的:

fileInfo, err := os.Lstat(path)
fileMode := fileInfo.Mode()
// fileMode.String() gives dturwxrwxrwx or -rwxrwxrwx
// which i do not want because the size is not always the same
unixPerms := fileMode & os.ModePerm

两种情况下我都得到-rwxrwxrwx,这与我要寻找的结果很接近。

但是,返回的对象的类型为os.FileMode。然后如何将其转换为string

2 个答案:

答案 0 :(得分:1)

您可以将fmt包中的变量之一(os.FileMode)传递为Sprintf方法的参数。

利用此方法会将您的类型转换为字符串,然后可以在程序的其余部分中将其用作字符串。

以下示例用法:

package main

import (
    "fmt"
    "os"
)

func main() {
    fileInfo, err := os.Lstat(path)
    if err != nil {
        // catch err
    }
    fileMode := fileInfo.Mode()
    // fileMode.String() gives dturwxrwxrwx or -rwxrwxrwx
    // which i do not want because the size is not always the same
    unixPerms := fileMode & os.ModePerm

    permString := fmt.Sprintf("%v", unixPerms)
    fmt.Println(permString)
}

答案 1 :(得分:0)

fileInfo.Mode()。Perm()。String()

https://golang.org/pkg/os/#FileMode.Perm