在用golang作laravel進程管理的時候,發現一個「坑」:php
strconv.Itoa(fid) 才能達到想要的數字字符
string(fid) 並不能!!(由於該轉換會將數字直接轉換爲該數字對應的內碼)laravel
fidstr := strconv.Itoa(fid) fidstr := string(fid) fmt.Printf("exec: %s %s %s %s\n",php, artisan, option, fidstr) cmd := exec.Command(br.php, br.artisan, br.option, fidstr)
當且僅當 data
爲[]byte
類型時 string(data)
才能達到想要的目標。
而其餘狀況,則須要根據類型來轉換:golang
好比: strconv.Itoa(int)
,不然獲得的不是咱們想要。測試
看測試代碼編碼
func Test_IntToString(t *testing.T) { fmt.Printf("string(1) = %v\n", []byte(string(1))) fmt.Printf("strconv.Itoa(1) = %v\n", []byte(strconv.Itoa(1))) }
咱們獲得運行以下結果:code
string(1) = [1] strconv.Itoa(1) = [49]
結論已經很明顯,string(int)
會將整數直譯爲ASCII編碼,
而strconv.Itoa(int)
纔會轉換成對應的數字字符在ASACII編碼。進程