Hacker News new | past | comments | ask | show | jobs | submit login

> There have been research variations of Java that accomplished this: instanceof checks insert implicit casts on branches where the instanceof check is true.

By the way, Go already has this. If you have a variable, say `foo`, with a generic type, say `interface{}`, you can say

  switch foo := foo.(type) {
    case MyFirstConcreteType:
      //foo is a MyFirstConcreteType instance here
    case MySecondConcreteType:
      //foo is a MySecondConcreteType instance here
    default:
      //foo is still the generic type here
  }
See https://golang.org/doc/effective_go.html#type_switch for details.



Yup! Type assertions work this way too. It's a much nicer design than traditional casts.


Check this out. With this tool, the type switch gets you exhaustiveness checks for hokey package-private sum-types in Go :)

https://github.com/BurntSushi/go-sumtype




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: