goの型をdefined typeとcomposite typeに2分出来ない理由

go1.18から型システムに大きな変更が加えられるという事で、改めてgoの型について学習しています。

教材としてGo言語仕様書輪読会さんの発表スライドを大変参考にさせて頂いているのですが、defined typeの項目で気になる文言が

defined types - Google スライド

defined typeではない型は、全て型リテラルで表される型である

goの型は主に

  • 事前定義型
  • ユーザー定義型
  • コンポジット型

の3要素で構成されていると認識していて、defined typeが事前定義型+ユーザー定義型を表すのなら、それ以外全てはコンポジット型なのでは?と考えていました。

その為「型リテラルで表される型である」という表現に若干違和感を覚えたのですが、以下のQAセクションでその理由が言及されていて

  1. defined typeでないtypeはcomposite typeと呼べばいいんでしょうか?

  2. ちょっと明確に答えられないところです。 composite typeという語は仕様書に現れるのですが明確に定義されていません。 string のような型リテラルがcomposite typeであることは確かなのですが、 type S string のようにして定義したSがcomposite typeなのかどうかはっきりと言えないためです。 defined typeではない型に対す

確かに、、、

この場合ユーザー定義型Sはdefined typeとコンポジット型、二つの性質を持つ事になってしまうので、defined typeとcomposite typeを完全に別物と定義するにはcomposite typeが「ユーザー定義型には適応されない」という文言が必要そうです。

なるほど、、、