Count me among those who love the language just the way it is and regard 
the prospect Go 2.0 with dread and loathing born of the Python 3 
experience.  

That being said, there's one itty-bitty change I'd like to advocate: *Allow 
methods on primitives*.

I think I understand why allowing new methods on external packages is a bad 
idea because it introduces a form of the fragile superclass problem.  But 
surely there's nothing fragile about strings, ints and floats.

Being unable to define a method on a string is *not* a showstopper since 
one can always do "type Foo string" or use type-assertions. It's just that 
it's inelegant in the case of a function that takes a recursive struct as 
an argument if the leaves of the tree are strings.  For example

type HTMLTree struct {
    tag string
    attributes string
    content * Content // 
}

type Content interface {
   Render()
}

// NOT ALLOWED
func (s  string) Render() {
}

So I have to do something like

type SC string
func (s SC) Render() {
}

but that means instead of being able to write

Div("", P("id=1", "When in the course of ..."))

one must use the wrapper type on every content string.

Div("", P("id=1", SC("When in the course of ...")))

Not the end of the world, but uglier than it ought to be, IMO.

Is there a way to get around this or, failing that, an explanation of why 
methods on primitives are verboten?

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+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/6daa53b9-c2e6-48e8-b022-c8339d3b8dbc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to