Before getting started, be sure to download the Go SDK for App Engine.
Creating a simple HTTP handler
Create a directory named myapp. All files for this application reside in this directory.
Inside the myapp directory, create a file named hello.go, and give it the following contents:
This Go package responds to any request by sending a response containing the message Hello, world!.
Creating the configuration file
An App Engine application has a configuration file called app.yaml. Among other things, this file tells the App Engine service which runtime to use and which URLs should be handled by our Go program.
Inside the myapp directory, create a file named app.yaml with the following contents:
From top to bottom, this configuration file says the following about this application:
The application identifier is helloworld. When you register your application with App Engine later in this tutorial, you will select a unique identifier, and update this value. This value can be anything during development. For now, leave it set to helloworld.
This is version number 1 of this application's code. If you adjust this before uploading new versions of your application software, App Engine will retain previous versions, and let you roll back to a previous version using the administrative console.
This code runs in the go runtime environment, with API version go1.
Every request to a URL whose path matches the regular expression /.* (all URLs) should be handled by the Go program. The _go_app value is a magic string recognized by the development web server; it is ignored by the production App Engine servers.
The syntax of this file is YAML. For a complete list of configuration options, see the Go Application Configurationpage.
Testing the application
With the hello package and configuration file mapping every URL to the Go program, the application is complete. You can now test it with the web server included with the App Engine SDK.
Check that you have everything in its right place. The application's directory structure should look like this:
Run the following command, giving it the path to the myapp directory, to compile your app and start the development web server:
/path/to/go_appengine/goapp serve myapp/
You may drop the /path/to/go_appengine/ if you added it to your PATH, as suggested earlier. You can also omit the path altogether if myapp is your current directory, so the command is simply:
The web server is now running, listening for requests on port 8080. Test the application by visiting the following URL in your web browser: