2015-12-25 25 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------ 

總之,根本不需要前導零。這是導致問題的不正確類型。

相關問題