2013-03-25 182 views
3

好吧,所以我一直在將字符串類型轉換爲字節寫入時遇到困難。這是編譯器錯誤:將字符串類型轉換爲int

cannot use row[5] (type uint8) as type string in function argument

cannot use &v (type *Field) as type int in function argument

這是行的例子[5]:$ 15,000.00

伊夫宣佈一個結構:

type Field struct { 
Eia uint8 
} 

這裏是主要的實現:

for { 
    record, err := reader.Read() 
    if err == io.EOF { 
     break 
    } else if err != nil { 
     panic(err) 
    } 

    var v Field 
    for _, row := range record { 
     eia, err := strconv.ParseInt(row[5], 8, &v) // Estimated Incoming Amount 
     if err == nil { 
      fmt.Printf("%+v\n", v) 
     } else { 
      fmt.Println(err) 
      fmt.Printf("%+v\n", v) 
     } 

任何人都可以請向我解釋如何strconv可以將行轉換爲整數?

+0

您必須先將行[5]轉換爲字符串。另外,你刪除多餘的&v – fuz 2013-03-25 21:05:11

+0

我沒有提及從csv /編碼包中讀取行[5]。因此,它默認情況下已經是一個字符串。 – Alex 2013-03-26 03:09:46

+0

你沒有向我們展示記錄的tyoe。信息不足的幫助很困難。 – fuz 2013-03-26 07:47:28

回答

3

如果您在http://play.golang.org/上提供了一個完整的示例,那麼爲您提供完整的解決方案會更容易。 ParseInt()接受字符串(你可能必須做string(row[5])),基礎(你可能意思是10)和比特尺寸(這是你應該放8的地方)。

它回調一個int(eia),它不會將它放入結構中,因爲它看起來像您正在嘗試。

取而代之的是if err == nil { v.Eia = eia }

+0

嗯,我設法讓字符串轉換正常工作,首先投射一個字符串變量,並用正確的基礎和比特大小解析它,正如你所提到的。這是:http://play.golang.org/p/qUIF3dRIat – Alex 2013-03-26 03:13:11

+0

解決方案的唯一警告是我不得不消除美元符號($),因爲它會導致無效的語法轉換錯誤。 – Alex 2013-03-26 03:15:25

+1

你可以使用'strings.TrimLeft'去除你不想要的任何主角,例如http://play.golang.org/p/GNhp8lLwdl – 2013-03-26 04:00:00