Dois tipos são idênticos ou diferentes. Um tipo definido é sempre diferente de qualquer outro tipo. Caso contrário, dois tipos são idênticos se seus literais de tipo subjacentes são estruturalmente equivalentes; ou seja, eles têm a mesma estrutura literal e os componentes correspondentes têm tipos idênticos.
Os seguintes tipos são idênticos:
A0, A1, and []string
A2 and struct{ a, b int }
A3 and int
A4, func(int, float64) *[]string, and A5
B0 and C0
[]int and []int
struct{ a, b *T5 } and struct{ a, b *T5 }
func(x int, y float64) *[]string, func(int, float64) (result *[]string), and A5
B0 e B1 são diferentes porque são novos tipos criados por definições de tipo distintas; func (int, float64) *B0 e func (x int, y float64) *[]string são diferentes porque B0 é diferente de *[]string.