No, the mistake is in your reading of the spec. You are complaining about this line:
interface{ int; any } // no specific types (intersection is empty) The spec makes it clear that: 1. "any" is short for "interface {}" 2. "interface {}" has no *specific types* 3. "interface { int; any }" is an *intersection* of *specific types* You are taking the intersection of the set of one type (int) with the empty set, and therefore the result is the empty set. Exactly as the comment says. On Thursday, 6 January 2022 at 11:47:52 UTC tapi...@gmail.com wrote: > On Thursday, January 6, 2022 at 6:15:06 PM UTC+8 Brian Candler wrote: > >> 1. interface { a;b } is intersection. The "Intersection" between two sets >> means things which exist in both sets simultaneously. >> 2. interface { a|b } is union. "Union" means a set of things which which >> exist in set A *or* set B. >> >> Quoting from the spec: >> *"the predeclared type *any* is an alias for the empty interface." * >> *"interface{} // no specific types"* >> *"For an interface with type elements, 𝑆 is the intersection of the >> specific types of its type elements."* >> >> Can you see now? >> > > The explanation is as what I think. > But what is your conclusion? Is it a mistake in spec? > -- 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/4a72d63e-011e-43ee-9f44-1dfda13a591cn%40googlegroups.com.