2017-07-26 6 views
0
var newR[] struct { 
     id string 
     eventid string 
     excel_id string 
     userid string 
     hallid string 
} 

i := 0 
for rows.Next() { 
    var id, eventid, excel_id, userid, hallid string 
    err = rows.Scan(&id, &eventid, &excel_id, &userid, &hallid) 

    // Here is what I want to do 
    newR[i].id = id 
    newR[i].eventid = eventid 
    newR[i].excel_id = excel_id 
    newR[i].userid = userid 
    newR[i].hallid = hallid 
    i++ 
} 

マルチ結果をマップ結局私は、エラーMSG "範囲外のインデックスランタイムエラー" を得ました任意の提案やヒントが役立ちます。ありがとう。ゴーlangは

+0

質問に重要な情報、つまりスライスの作成方法がありません。私はあなたが保存したいデータの量が小さすぎると思うでしょう。 –

答えて

0

あなただけの構造体を作成し、データを読み込むと、結果を蓄積するために、スライスを使用するためにそれを使用し、各フィールドのローカル変数を作成する必要はありません。

// struct definition must be out of functions body 
type newR struct { 
    id string 
    eventid string 
    excel_id string 
    userid string 
    hallid string 
} 

var newRs []newR 
for rows.Next() { 
    var current newR 
    err = rows.Scan(&current.id, &current.eventid, &current.excel_id, &current.userid, &current.hallid) 
    newRs = append(newRs, r) 
} 

そしてまた、チェックすることをお勧めしますrows.Next()rows.Scan(...)の後にエラーが発生しました。

0

appendを使用して新しい要素を追加し、まだ割り当てられていないスライスを初期化します。ないFMTのためか、それをテストが、私は私の携帯電話からこれを入力した

申し訳

newElement := struct { 
    id string 
    eventid string 
    excel_id string 
    userid string 
    hallid string 
} { 
    id: id, 
    eventid: eventid, 
    excel_id: excel_id, 
    userid: userid, 
    hallid: hallid, 
} 
newR = append(newR, newElement) 

...。