I've suggested this approach based in the slack, adding it here as well to 
make it searchable.

Implement Reader/Writer such that you can do:

func ProcessLine(in *Reader, out *Writer) error {
    start, finish, participant := in.Float64(), in.Float64(), in.String()
    if err := in.Err(); err != nil {
        return err
    }

    out.String(participant)
    out.Float64(finish - start)
    return nil
}

+ Egon

On Thursday, 10 August 2017 19:17:04 UTC+3, Sofiane Cherchalli wrote:
>
> Hi Medina,
>
> Sorry I was on vacations.
>
> So do you mean the way to do it is to hardcode most of functionality. No 
> need to use custom types, interfaces. Just plain text parsing?
>
> In that case, how easy is it to evolve or refactor the code?
>
> Thanks
>
> On Wednesday, July 26, 2017 at 8:36:15 PM UTC+2, Diego Medina wrote:
>>
>> I think we have a similar setup to what you are trying to do, we also 
>> started with Scala and about 3 years ago we moved it to Go (still use Scala 
>> for other parts of our app).
>>
>> While working in Scala and other languages you are encourage to abstract 
>> things as much as you can, in Go it is often better to just address the 
>> issues/requirements at hand and be clear on what you are doing.
>> In our case we define a struct that has the expected fields and types for 
>> each column, and as we walk each row, we check that we get the expected 
>> type, then it's a matter of cleaning/adjusting values as we need to, assign 
>> the result of this cell to a variable and continue with the rest of the 
>> cells on this row, once done, we initialize our struct and save it to the 
>> database, move to the next row and repeat.
>>
>> Hope it helps.
>>
>>
>> On Wednesday, July 26, 2017 at 10:09:07 AM UTC-4, Sofiane Cherchalli 
>> wrote:
>>>
>>> The schema is statically specified. The values always arrive in a 
>>> defined order. Each value has a defined type.
>>>
>>> On Tuesday, July 25, 2017 at 3:01:14 AM UTC+2, rog wrote:
>>>>
>>>> On 24 July 2017 at 23:21, Sofiane Cherchalli <sofi...@gmail.com> wrote:
>>>>
>>>>> Yes, I'm trying to stream CSV values encoded in strings. A schema 
>>>>> defines a type of each value, so I have to parse values to verify they 
>>>>> match the type. Once validation is done, I apply functions on each value.
>>>>>
>>>>
>>>> Is the schema dynamically or statically specified? That is, do you know
>>>> in advance what the schema is, or do are you required to write
>>>> general code that deals with many possible schemas?
>>>>
>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to