As someone who is new to Golang world, I am confused with the following code.
As sample code shown, type S's "underlying" type is slice (in C++ jargon S is the derived class of slice), and if I pass a slice as S in function parameter, it works; but if I pass slice as S in function receiver, Go doesn't "downcast" it to S. I do know that S and []int are treated as different types in Go, but as the append function shows, Go will "upcast" S to slice to use slice.append(). So when should I expect the type casting to work? Or or specific to the scenario, why it fails if I use slice as the function receiver for S? > package main > import ( > "fmt" > ) > type S []int > > func (s S) testUnderlyingTypeAsReciever() { > fmt.Println("Hello, playground") > } > func testUnderlyingTypeAsParam(s S) { > fmt.Println("Hello, playground") > } > func main() { > d := []int{2} > s := S{} > s = append(s, 1) // use append function for slice > testUnderlyingTypeAsParam(d) // pass > d.testUnderlyingTypeAsReciever() // fail > } -- 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.