I have asked this on another board but the only answer I got was it hurts readability. Why is goto so bad to use? Take a code like this for example-

Code:
#include <iostream>

using namespace std;
int main()
{
    begin:
	float first, second;
	char option, repeat;
	cout << "\nFirst number: ";
	cin >> first;
	cout << "\nSecond number: ";
	cin >> second;
    menu:	
	cout << "\n\n1. Add" << endl;
	cout << "2. Subtract" << endl;
	cout << "3. Multiply" << endl; 
	cout << "4. Divide" << endl;
	cout << "Option (1/2/3/4): ";
	cin >> option;
	if (option=='1')
		cout << "\nAnswer: " << first + second << endl;
	else if (option=='2')
		cout << "\nAnswer: " << first - second << endl;
	else if (option=='3')
		cout << "\nAnswer: " << first * second << endl;
	else if (option=='4')
		cout << "\nAnswer: " << first / second << endl;
	else
	{
		cout << "That is an invalid option. Please select a valid one." << endl;
		goto menu;
	}
	cout << "\nAgain? (y/n): ";
	cin >> repeat;
	if (repeat=='y')
		goto begin;
	else
		exit(0);
	return 0;
}
What is so bad about using those goto statements there? I dont think it hurts readability at all. Others say use loops, that they are more clearer and alot easier. But it seems to me that goto statements are easier than loops, and seem to be just as efficent.