go os.FileMode()傳值問題
linux中的許可權rwx分別對應4 2 1,相加的值為7,習慣了linux中許可權命令使用,會將 os.FileMode(777) 誤解等價於 777許可權,但是將777傳入os.FileMode,你會發現列印出來的不是 -rwxrwxrwx
可能會想只要在程式設計的時候,在前面加個0不就行了?但是有情況是這樣的,就是外部傳入一個變數值是十進位制數777
package mainimport ( "fmt" "os")func main() { fmt.Println(os.FileMode(777), 777) fmt.Println(os.FileMode(0777), 0777) } 輸出結果: -r----x--x 777-rwxrwxrwx 511
正確使用os.FileMode()時,應該先將777 先看成八進位制,然後轉成十進位制值,傳入os.FileMode中,轉換方法如下
方法一:使用標準庫中的strconv.ParseInt,如下
mode := 777um, _ := strconv.ParseInt(strconv.Itoa(mode), 8, 0)// 完整測試程式碼package mainimport ( "fmt" "os" "strconv")func main() { um, _ := strconv.ParseInt(strconv.Itoa(777), 8, 0) fmt.Println(os.FileMode(777), 777) fmt.Println(os.FileMode(0777), 0777) fmt.Println(os.FileMode(um), um) } 輸出: -r----x--x 777-rwxrwxrwx 511-rwxrwxrwx 511
方法二:自己編寫轉換進位制函式
作者:laijh
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2334/viewspace-2819965/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Go 語言傳值和深淺複製問題Go
- python中傳值和傳地址問題Python
- vue元件(component)傳值問題Vue元件
- 父子元件之間的傳值問題元件
- 元件複用傳值(待解決問題)元件
- Ajax與Flask傳值的跨域問題Flask跨域
- js中 函式引數的 傳值/傳引用 問題JS函式
- GO切片傳值/引用/指標Go指標
- go 值傳遞和地址傳遞的例子Go
- vue使用的props元件傳值問題處理Vue元件
- 面試官問:Go 中的引數傳遞是值傳遞還是引用傳遞?面試Go
- 函式呼叫引數變數傳值的問題函式變數
- Go語言引數傳遞是傳值?還是傳引用 ?Go
- vue 父元件props傳值子元件時 的更新問題Vue元件
- (求教)關於js函式按值、引用傳遞的問題JS函式
- 在html中使用axios傳送請求到servlet時遇到的傳值問題HTMLiOSServlet
- 傳參問題
- go語言引數傳遞到底是傳值還是傳引用Go
- database 空值問題Database
- vue-父子元件之傳值和單項資料流問題Vue元件
- go path 存在的問題Go
- go熱更新問題求助Go
- Go TCP 粘包問題GoTCP
- Go 之基礎速學 (八) 方法當中的返回值問題(小白篇)Go
- go 閉包捕獲問題Go
- Go mod 使用遇到的問題Go
- go mod init報錯問題Go
- Go mod 相容性問題Go
- defer問題——面試Go必看面試Go
- shell 變數賦值問題變數賦值
- 關於 GO 中 flag.StringVar 或者 flag.String 都獲取不到值的問題Go
- jsp頁面通過url向後臺傳值時的中文亂碼問題JS
- vue父子傳值與非父子傳值Vue
- iOS Block傳值、代理傳值、通知中心iOSBloC
- 小白愛上了Go之Go的基礎配置問題Go
- 解決 go get 超時問題Go
- go專案起步-環境問題Go
- go的編譯優化問題Go編譯優化