My teacher said "I am going to have a walk" today in class and to me it seems incorrect. Correct variants that I know are:
- Going for a walk
- Going to take a walk
- Going to walk
Is this correct? If so, why?
It's fine. I agree that it sounds more British than American. Americans tend to prefer "take" in expressions such as "take a shower," while British English will also use "have." See this link: http://www.bbc.co.uk/worldservice/learningenglish/grammar/learnit/learnitv343.shtml
There is nothing wrong with this construction. It sounds more British than American, for some reason, but if you can have a fight, or have a bath, or have a go at something, why can't you have a walk?
You could say "I am going to have a walk" and although it seems a bit clunky to me it is quite understandable.
Going for a walk and going to take a walk would both work well, the first is maybe more British English the latter more US English but they are the most common ways one would use that phrase.
"Going to walk" is not a statement in itself, it needs a destination - "I'm going to walk to the shops" would be fine but if you had no destination in mind or you didn't want to say what your destination was you would just say "I'm going for a walk."