Golang-将uint转换为os.FileMode

Gok*_*vas 3 casting type-conversion go

我正在尝试从用户那里获取字符串的文件权限,并将其转换为type os.FileMode

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

这就是我在做什么。

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

我没有获得正确的权限。

我得到的--w----r--不是-rw-r--r-- 我一直在寻找的解决方法。

那么,我到底该如何实现呢?

Rob*_*ier 5

tempval, err2 = strconv.ParseUint(data["Perm"], 10, 32)
Run Code Online (Sandbox Code Playgroud)

您在这里明确要求以10为基数。如果您希望使用base 8(这是unix文件模式的传统基础),则需要8在第二个参数中使用。或更好的方法是使用base 0,由于前导0,它将自动选择base8。strconv.ParseInt有关“ base 0”的工作原理,请参见文档。