2015-12-25 23 views
-3
func stringToInt(s string) int { 
    i, err := strconv.Atoi(s) 
    check(err) 
    return i 
} 

os.FileMode(stringToInt("0777")) 

时不需要转换为INT(前导零不会被删除),通过直接设置权限:为什么使用Golang设置的文件权限与预期不同?

os.FileMode(0777) 

文件的权限是否正确

当前结果

777 
777 
-r----x--x 
753 
753 
--wxrw---x 
500 
500 
-rwxrw-r-- 

预期结果

777 
-rwxrwxrwx 
753 
-r-xr-x-wx 
500 
-r-x------ 
+3

您期待“0777”被解释为八进制的问题吗? –

+0

“0777”与“777”不同的唯一上下文就是一个字符串。如果你将它转换为“int”,那么它当然会失去它的前导数字。正如@JamesHenstridge所问:你期望'0777'是'777 base 8'吗? –

回答

0

基于@AdamSmith和@JamesHenstridge以下的意见解决这个问题:

mode, _ := strconv.ParseInt(fileAttributes["mode"], 8, 32) 

0777 
511 
-rwxrwxrwx 
0753 
491 
-r-xr-x-wx 
0500 
320 
-r-x------ 

然而,当前导零已被删除的结果是完全一样的:

777 
511 
-rwxrwxrwx 
753 
491 
-r-xr-x-wx 
500 
320 
-r-x------ 

总之,根本不需要前导零。这是导致问题的不正确类型。

相关问题