Golang - 将uint转换为os.FileMode

时间:2015-10-04 13:25:47

标签: go casting type-conversion

我尝试将用户的文件的用户权限作为字符串获取,并将其转换为os.FileMode类型。

因此,在我获得权限"0644"并将其转换后,它变为644。我将其用作ioutil.WriteFile的参数。

这就是我正在做的事。

data["perm"] = "0644"
tempval, err2 = strconv.ParseUint(data["Perm"], 10, 32)
// tempval is 644

我没有获得正确的权限。

我得--w----r--而不是-rw-r--r-- 我一直试图寻找解决方法。

那么,我究竟是如何实现这一目标的?

1 个答案:

答案 0 :(得分:4)

func :: Num a => [b] -> (type-of-f) -> a
func :: Num a => [b] -> (b -> a) -> a

你在这里明确要求基数10。如果你想要base 8(这是unix文件模式的传统基础),那么你需要在第二个参数中使用tempval, err2 = strconv.ParseUint(data["Perm"], 10, 32) 。或者更好的是,使用基数8,由于前导0,它会自动选择基数为8.请参阅0上的文档,了解“基数0”的工作原理。