There's two things going on here...
$go is always undefined because register_globals is off. Read the [man]register_globals[/man] manual page for details.
You're getting an "undefined variable" notice because you have error reporting cranked up (probably error_reporting(E_ALL)). This is a good thing, though it can take some getting used to. There is a difference between a blank string ("") and the undefined value (null), but PHP usually lets you pretend they are the same. With "notice" level error reporting PHP is letting you know that it's faking it. This can be helpful, because if you typo a variable name, it'll warn you that you're using an undefined variable instead of pretending your typing is fine. Use [man]isset[/man] or [man]empty[/man] to check if a variable is set without triggering those notices.
Consider using a function like this, to work around both issues:
function getvar($varname, $default = '') {
if (isset($_REQUEST[$varname])) return $_REQUEST[$varname];
else return $default;
}
Then use switch(getvar('go')) instead of switch($go).