HNHacker News
TopNewBestAskShowJobs

mdlayher

143 karma · joined September 4, 2018

submissionscomments
mdlayher··on Go generics draft design: building a hashtable
In this particular case, the compiler can't infer the type of V if you omit the type parameters at the call sites:

  type checking failed for main
  prog.go2:17:3: cannot infer V (prog.go2:46:27)
  prog.go2:22:3: cannot infer V (prog.go2:46:27)
But generally you are right, yes. It is able to infer K at least.
mdlayher··on Go generics draft design: building a hashtable
Oh wow, for some reason I totally zoned out and finally understand what you mean. Yes, you're right! I should fix that.
mdlayher··on Go generics draft design: building a hashtable
Yep that is true. I wanted both values to be comparable for an easy demo but would write it as you've suggested if I intended to make this a general purpose package.
mdlayher··on Go generics draft design: building a hashtable
I like the idea, I just haven't given it a try with the new draft yet. Sounds like it's worth exploring at the very least.
mdlayher··on Go generics draft design: building a hashtable
The alternative is to do something like:

type Int int

func (i Int) Hash() uintptr { /* do the hash */ }

But I didn't want to deal with it in this code. I agree that it isn't optimal and would be curious to see if the situation can be improved.

mdlayher··on Go generics draft design: building a hashtable
Right, but you can only write strings or bytes to the hash, not integers, booleans, structs, etc. So the problem remains.
mdlayher··on Go generics draft design: building a hashtable
Exactly. Thanks!
mdlayher··on Implementing a network protocol in Go
Hey folks, presenter here! Happy to answer any questions you all may have, and thanks again to Sourcegraph for the live blog!