「~に行ったことがある」の英語は I have been to ~. です。
ただ英語を勉強していて「行く」という言葉から I have gone to ~. ではだめなのかと疑問に思ったことはないでしょうか?
結論から言うと「~に行ったことがある」は I have been to ~. が正しく、I have gone to ~. は間違いです。
なぜ I have gone to ~. はだめなのか?
それは現在完了形の「経験」の用法においては go という動詞は使わないことがルールだからです。
現在完了形には「完了・結果・経験・継続」の用途があり、語法上のルールがないと意味が混乱してしまいます。
例文
He has gone to the U.S.「彼はアメリカに行ってしまった」
上記の例文のように have gone to は現在完了形の「結果」の用法に使われます。
この意味と混乱しないよう「~に行ったことがある」という経験の意味ではgo の代わりに have been to を使うことをルールとしているのです。
参考
He has gone to the U.S.「彼はアメリカに行ってしまった」
He went to the U.S.「彼はアメリカに行った」
現在完了形と過去形を比べると、現在完了形は「行ってしまったばかり」という感じと、「行ってしまって寂しい」などの心情が伝わってきます。
それに比べると過去形のほうは「彼はアメリカに行ったよ」と淡々とした感じです。
ただし I have gone to ~. が許容されることもある
原則は「~に行ったことがある」の英語は I have been to ~. なのですが、 I have gone to ~. でもよいとされる時もあります。
例文
I have gone to Hawaii several times.「ハワイには何度も行ったことがある」
上記の例のように経験を示す副詞(上記の例ではseveral times)を伴う場合は意味が混乱しないため、I have gone to ~. でもOKとされています。
ただしあくまで「許容されている」だけなので、ご自身で使うときは I have been to ~. をお勧めします。
I have been to ~. は「~に行ってきたばかりだ」の意味でも使う
混乱させてしまいそうですが、I have bee to ~. は「~に行ってきたばかりだ」の「完了」の用法でも使います。
例文
I have just have been to the bank.「ちょうど銀行に行ってきたところだよ」
上記の例文の日本語訳が「私は銀行に行ったことがある」とならないのは、just という副詞があるからです。現在完了形は副詞の存在により意味が異なってきます。