言うならgo to have lunchで、go having lunchはほとんど言いません(不自然な感じがあるす)。でも、go to lunchが最も普通な言い方です。以下は、それに関するつまらない能書きです。
大雑把な傾向として、go doingは主にスポーツや楽しみに使います。go to doは、それ以外になります。go shoppingはショッピングを楽しむ感覚で、go to buyだと単なる買い出しといったところでしょうか。
現在分詞doingは今やっている感覚、不定詞to doはこれからやる感覚という違いがあります。I'm playing tennisの「今、テニスをしています」に対して、I'm to play tennisが「これからテニスをする予定である」になるような差異です(必ずしも成立するというものではない)。
個人的な推測ですが、楽しむことであれば、気持ちとしては今やっているかのような感覚でgo doing、面白いわけではないのなら、単にこれからやるという義務感だけのgo to doという差異があるように思います。
この他に、go to [名詞]の表現パターンがあります(他に、go for, go on等があるが割愛)。lunchの場合、go to lunchという、よく使う表現があるため、go to have lunch自体があまり言われません。豪勢、あるいは特別親しい人との昼食で楽しいなら、go having lunchが成立しそうですが、どうもそういう言い方がありません。
それでも使いどころがあるとすれば、go to have a great lunchといった、lunchを何らかの形容をしての言い方になります。じゃあ、それは嬉しいからgo having a great lunchでいいじゃないか、と思えるんですが、それは言わない。
なぜだろうと思って調べたりしたこともあるんですが、例えば便利な言い方として、go (and) have lunchという言い方があるんですね。二つの動詞をandでつないで、あたかも一つの動詞のように使う言い方があるんですが、goは特に頻繁に用いられるためandは省略されることが定着したようです。
そうなると、現在分詞もto不定詞も要らないんですね。特別で楽しい昼食であっても、go have a great lunchなどでいい。そのため、go to have lunchもgo having lunchもほとんど言わないようになり、ことにhavingは言いたいケースが少なため、不自然に聞こえてしまうようにすらなったのではないかと思います。
一方、go to [名詞](lunch,work, school, bed, etc)は簡潔ですし、haveなどの動詞を使う表現とは全く別系統の表現のため、そのまま使われているようです。
P.S.
go out for lunch等の表現まで言いだすと長くなるので割愛しました。すみません。
お礼
ご丁寧に解説していただき、ありがとうございました! またよろしくお願いします。