Hi Rog, Please inline comments.
Thx On Thursday, July 20, 2017 at 1:58:09 PM UTC+2, rog wrote: > > I'm not convinced that holding all your values in a uniform way > is going to be that helpful for you. You might be better using reflection > to map the columns into a struct type (there's probably a package > out there already that can do that). > > However, to answer without questioning the whole premise: > > You can't pass a function on a specific type to the more generally > typed func(Valuer)Valuer because the value in the column might not > be of the specific type - what should happen if the column is a string > and you pass func(CSVFloat)CSVFloat to Apply? > Couldn't do checking with for instance reflection? > > Here's your code made to work, with some arguably redundant stuff > removed. The Transformer type seemed unnecessary, as Apply > and RemoveColumn both work with the row in place. The Type field > in the Column struct seemed unnecessary, as the type is implied by > the value in the column. Also, the whole notion of Type seemed > a bit redundant as CSV files have no notion of type, and it seems like > you want to support custom types. The CSV prefix on the type names > seemed unnecessary, as this would probably be in a package with > some kind of csv-related name. > Is it possible to solve the problem without using type assertion? > > https://play.golang.org/p/9mSfG1m4VZ > > cheers, > rog. > > On 20 July 2017 at 08:05, Sofiane Cherchalli <sofi...@gmail.com > <javascript:>> wrote: > >> Hi Silviu, >> >> Thanks for the reply. >> >> Basically I want to kinda functional map on my custom types by applying >> functions on base value or struct values. >> >> What if I want to for instance: >> >> - Multiply the float64 value inside CSVFloat by 2 ? >> - or Replace a custom type value with another one from the same type? >> >> Thanks >> >> >> On Thursday, July 20, 2017 at 5:09:40 AM UTC+2, Silviu Capota Mera wrote: >>> >>> Before: myfn := func(v CSVFloat) CSVFloat { return v } >>> >>> After: myfn := func(v Valuer) Valuer { return v } >>> >>> On Wednesday, 19 July 2017 16:48:07 UTC-4, Sofiane Cherchalli wrote: >>>> >>>> Hi! >>>> >>>> I'm a noob in Go and I need some guidance/help on this: >>>> https://play.golang.org/p/0TGzKiYQZn >>>> >>>> Basically I'm implementing a CSV parser, and applying transformations >>>> on column value. >>>> >>>> In last part of the code I'm trying to apply a function on CSVFloat >>>> type which satisfies Valuer interface, but I got a compiler error. >>>> >>>> In Scala language, this could be done by using map function, but how to >>>> do it in Golang? >>>> >>>> Thanks. >>>> >>> -- >> 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...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.