I have the below struct. I have the method csv which will return concatenate the fields in a string with comma separated value.
package main
import (
"bytes"
"strconv"
)
type Event struct {
B_id string
B_nam string
B_typ int
B_uuid string
B_mj_id int
B_mi_id int
B_uid string
B_url string
B_mac string
E_typ string
E_time string
C_id string
D_os string
D_os_v string
D_nam string
D_v string
Br_nam string
Br_v string
A_pkg string
A_id string
M_u_id string
bn_id string
}
func (e *Event) Csv() string {
var buffer bytes.Buffer
var comma string = ","
buffer.WriteString(e.B_id)
buffer.WriteString(comma)
buffer.WriteString(e.B_nam)
buffer.WriteString(comma)
buffer.WriteString(strconv.Itoa(e.B_typ))
buffer.WriteString(comma)
buffer.WriteString(e.B_uuid)
buffer.WriteString(comma)
buffer.WriteString(strconv.Itoa(e.B_mj_id))
buffer.WriteString(comma)
buffer.WriteString(strconv.Itoa(e.B_mi_id))
buffer.WriteString(comma)
buffer.WriteString(e.B_uid)
buffer.WriteString(comma)
buffer.WriteString(e.B_url)
buffer.WriteString(comma)
buffer.WriteString(e.B_mac)
buffer.WriteString(comma)
buffer.WriteString(e.E_typ)
buffer.WriteString(comma)
buffer.WriteString(e.E_time)
buffer.WriteString(comma)
buffer.WriteString(e.C_id)
buffer.WriteString(comma)
buffer.WriteString(e.D_os)
buffer.WriteString(comma)
buffer.WriteString(e.D_os_v)
buffer.WriteString(comma)
buffer.WriteString(e.D_nam)
buffer.WriteString(comma)
buffer.WriteString(e.D_v)
buffer.WriteString(comma)
buffer.WriteString(e.Br_nam)
buffer.WriteString(comma)
buffer.WriteString(e.Br_v)
buffer.WriteString(comma)
buffer.WriteString(e.A_pkg)
buffer.WriteString(comma)
buffer.WriteString(e.A_id)
buffer.WriteString(comma)
buffer.WriteString(e.M_u_id)
buffer.WriteString(comma)
buffer.WriteString(e.bn_id)
return buffer.String()
}
Here you can see that I adding each fields in a buffer and returning it as a string. This code does not looks nice.
Is it possible to get the field value dynamically? Something like,
func (e *Event) Csv() string {
var buffer bytes.Buffer
var comma string = ","
var x [22]string fieldValues = //Somehow get the field Values
for i := 0; i < 22; i++ {
buffer.WriteString(B_id)
buffer.WriteString(comma)
}
return buffer.String()
}