<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8110657754519829885</id><updated>2026-04-12T23:55:22.790-07:00</updated><title type='text'>GoLang Tutorials</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-2052236272081681627</id><published>2013-08-15T15:54:00.000-07:00</published><updated>2013-08-15T15:54:30.932-07:00</updated><title type='text'>Installing and Configuring Go</title><summary type="text">
Other topics in this series - Table of Contents


In preparation for a few beginner workshops, I created videos for people to follow to install and configure the Go development tools.  Just adding them here.


On Mac OSX:





On Ubuntu Linux:






The steps that I&#39;ve followed are pretty much this (with my username &#39;vj&#39;):


Download the zip or .tar.gz file for your platform from https://</summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/2052236272081681627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2013/08/installing-and-configuring-go.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2052236272081681627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2052236272081681627'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2013/08/installing-and-configuring-go.html' title='Installing and Configuring Go'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-5180559165614365752</id><published>2012-09-07T09:11:00.001-07:00</published><updated>2013-08-15T15:56:03.549-07:00</updated><title type='text'>Filtering AppEngine dev_appserver logs on unix bash</title><summary type="text">
Other topics in this series - Table of Contents


Just a small post to make a note of something effective that I use.  While working with the appengine, one often has to wade through lots of log statements, and having a lot of log statements is a good thing in my opinion.  However, one can miss crucial information when the output isn’t very readable.  I use the following command to filter and </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/5180559165614365752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2012/09/filtering-appengine-devappserver-logs.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/5180559165614365752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/5180559165614365752'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2012/09/filtering-appengine-devappserver-logs.html' title='Filtering AppEngine dev_appserver logs on unix bash'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-5351419335584820377</id><published>2012-07-12T07:59:00.002-07:00</published><updated>2012-07-12T14:50:38.076-07:00</updated><title type='text'>My favorite ideas in the Go ecosystem - a usability perspective</title><summary type="text">
Other topics in this series - Table of Contents



At the Meet the Go Team session at Google I/O 2012, a question that brought a bunch of different responses from the main people working on Go was ‘What is your favorite Go feature?’.  But I lie.  The question was actually ‘What feature or design decision of Go had the most surprising effect on how code was written?’.  Ken Thompson thought it was</summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/5351419335584820377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2012/07/my-favorite-ideas-in-go-ecosystem.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/5351419335584820377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/5351419335584820377'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2012/07/my-favorite-ideas-in-go-ecosystem.html' title='My favorite ideas in the Go ecosystem - a usability perspective'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-4436281437341231186</id><published>2012-07-03T09:22:00.000-07:00</published><updated>2012-08-06T02:50:36.681-07:00</updated><title type='text'>GoLang talks and tutorials - videos</title><summary type="text">
Other topics in this series - Table of Contents



Google Dev, 2012: Getting started with Go, Andrew Gerrand
Boston GDG, 2012: A Tour of Go - interfaces, reflection, and concurrency. Builds a toy web crawler to demonstrate these, Russ Cox (Q&amp;A page)
A Hangout, 2012: Building Go Apps on App Engine, Johan Euphrosine, Andrew Gerrand

Google IO, 2012: Go Concurrency Patterns, Rob Pike
Google IO, </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/4436281437341231186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2012/07/golang-talks-and-tutorials-videos.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4436281437341231186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4436281437341231186'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2012/07/golang-talks-and-tutorials-videos.html' title='GoLang talks and tutorials - videos'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-8017916041157681803</id><published>2012-01-05T04:48:00.000-08:00</published><updated>2012-04-13T12:09:17.819-07:00</updated><title type='text'>Jobs and opportunities in the Go world</title><summary type="text">
Other topics in this series - Table of Contents


To assist those who are learning to also find available opportunities, I wanted to maintain a list of the early job postings.  If you know of any other openings apart from this list or if any of these are not relevant any more, kindly let me know at sathishvj at gmail.com so that I may update this list.



Job Openings

Torbit is hiring!- http://</summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/8017916041157681803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2012/01/jobs-and-opportunities-in-go-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/8017916041157681803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/8017916041157681803'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2012/01/jobs-and-opportunities-in-go-world.html' title='Jobs and opportunities in the Go world'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-2739115976194051939</id><published>2012-01-01T13:53:00.000-08:00</published><updated>2012-01-02T23:59:30.765-08:00</updated><title type='text'>Interfaces in Go - Part 2: Aiding adaptable, evolutionary design</title><summary type="text">
Other topics in this series - Table of Contents



In discussing interfaces in the first post, I had started off with a familiar example from OOP - a Shaper interface and a couple of concrete shapes that implemented the interface.  But as Rob pointed out in this this groups thread, &quot;Go&#39;s interfaces aren&#39;t a variant on Java or C# interfaces, they&#39;re much more. They are a key to large-scale </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/2739115976194051939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2012/01/interfaces-in-go-part-2-aiding.html#comment-form' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2739115976194051939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2739115976194051939'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2012/01/interfaces-in-go-part-2-aiding.html' title='Interfaces in Go - Part 2: Aiding adaptable, evolutionary design'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-6871294449585921014</id><published>2011-11-22T14:54:00.000-08:00</published><updated>2013-05-01T20:49:37.666-07:00</updated><title type='text'>OAuth2: 3-legged authorization in a Go web application</title><summary type="text">
Other topics in this series - Table of Contents


OAuth is currently the recommended standard for user authorization.  I’ll limit this write up to just examples of using the OAuth standard with Google using Go.  However there are a lot of good write ups on the web that explains the process well.  

One of the major uses of OAuth is that a user can authorize your application, using a 3-legged </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/6871294449585921014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/oauth2-3-legged-authorization-in-go-web.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/6871294449585921014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/6871294449585921014'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/oauth2-3-legged-authorization-in-go-web.html' title='OAuth2: 3-legged authorization in a Go web application'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOh6elOmn-QC6d4qVBFHuXQLgFuSJIsQ4YD2xtOH6o-awazgH-i6qhyphenhyphenIWEtc4yp_o795k_G7bWSjBq5xI-wcz75xCBSxumgK7wXqBwC8X9LgPyLfKvLfOEnDVHn_-RNLGBth8WvBKb706g/s72-c/googleApiConsole.png" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-7627832878054999862</id><published>2011-11-18T15:41:00.001-08:00</published><updated>2011-11-18T16:07:36.613-08:00</updated><title type='text'>Using an external api in a Go AppEngine program - urlshortener from Google APIs</title><summary type="text">Other topics in this series - Table of Contents


This tutorial is almost exactly the same as http://golangtutorials.blogspot.com/2011/11/using-external-api-in-go-web-program.html, except that we will be doing the same program for the AppEngine.  There are a few differences on how to make it work, so I shall, even at the cost of repetition for those who are coming directly to this page for </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/7627832878054999862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/using-external-api-in-go-appengine.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/7627832878054999862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/7627832878054999862'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/using-external-api-in-go-appengine.html' title='Using an external api in a Go AppEngine program - urlshortener from Google APIs'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-2019389161072872997</id><published>2011-11-18T12:07:00.000-08:00</published><updated>2011-11-18T16:12:22.455-08:00</updated><title type='text'>Using an external api in a Go web program - urlshortener from Google APIs</title><summary type="text">Other topics in this series - Table of Contents

In this tutorial, we will look at how to use an external API within our go program.  The one that we shall use is the URL Shortener API.  You can try its present functionality at http://goo.gl/.  Enter a URL like http://golangtutorials.blogspot.com/ and you will see a shorter URL returned, which is much easier to embed, say, in a service like </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/2019389161072872997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/using-external-api-in-go-web-program.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2019389161072872997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2019389161072872997'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/using-external-api-in-go-web-program.html' title='Using an external api in a Go web program - urlshortener from Google APIs'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-2558848686890106963</id><published>2011-11-15T10:45:00.000-08:00</published><updated>2012-06-30T10:05:10.397-07:00</updated><title type='text'>Go Templates - Part 3 - Template Sets</title><summary type="text">Other topics in this series - Table of Contents
See also: Go Templates - Part 1
See also: Go Templates - Part 2




A template Set WAS a specific data type that allowed you to group together related templates in one group.  Though it does not exist now as an individual data type, it is subsumed within the Template data structure.  So if you now parsed a set of files that contains text within it </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/2558848686890106963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/go-templates-part-3-template-sets.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2558848686890106963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/2558848686890106963'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/11/go-templates-part-3-template-sets.html' title='Go Templates - Part 3 - Template Sets'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-9103079306402990800</id><published>2011-10-31T16:03:00.000-07:00</published><updated>2012-07-18T05:11:58.902-07:00</updated><title type='text'>gotest - unit testing and benchmarking Go programs</title><summary type="text">Other topics in this series - Table of Contents

The Go installation that you have comes with a unit testing package called testing and a tool called go test that you can use to write unit tests.  This unit testing framework, like frameworks in other languages, allow you to write any number of tests that you can run frequently to check the correctness of your code in small units.  You can also </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/9103079306402990800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/gotest-unit-testing-and-benchmarking-go.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/9103079306402990800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/9103079306402990800'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/gotest-unit-testing-and-benchmarking-go.html' title='gotest - unit testing and benchmarking Go programs'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-3923118762725422253</id><published>2011-10-30T20:11:00.000-07:00</published><updated>2011-11-01T19:27:12.952-07:00</updated><title type='text'>Analysing a Google AppEnginge for Go program</title><summary type="text">Other topics in this series - Table of Contents

In this section, we shall look at an existing demo program that we ran in the Installation and Setup tutorial.  This will be a good place to start analysing and understanding Go programs for the Google AppEngine and will allow us to move on to larger programs of our own.  

Directory Structure
The list of files under google_appengine/demos/</summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/3923118762725422253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/analysing-google-appenginge-for-go.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3923118762725422253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3923118762725422253'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/analysing-google-appenginge-for-go.html' title='Analysing a Google AppEnginge for Go program'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-7477442574980410407</id><published>2011-10-30T05:17:00.000-07:00</published><updated>2011-11-01T18:01:48.410-07:00</updated><title type='text'>Go packages and goinstall - creating and using your own packages in Go</title><summary type="text">Other topics in this series - Table of Contents


For a small beginner’s introduction to packages you can read my other writeup: Go ‘Hello World’ - A line by line approach.  In this tutorial we will look at how you can work with the goinstall tool to create, install, and use your own packages locally.  goinstall has larger functionality than this alone and you can read more about it here: Command</summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/7477442574980410407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/go-packages-and-goinstall-creating-and.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/7477442574980410407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/7477442574980410407'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/go-packages-and-goinstall-creating-and.html' title='Go packages and goinstall - creating and using your own packages in Go'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-4322404616311752563</id><published>2011-10-25T18:56:00.000-07:00</published><updated>2012-06-30T08:59:29.171-07:00</updated><title type='text'>Go Templates - Part 2</title><summary type="text">Other topics in this series - Table of Contents
See also: Go Templates - Part 1
See also: Go Templates - Part 3 - Template Sets


There is some documentation, which I consider inadequate, about the template packages at http://golang.org/pkg/text/template/ and http://golang.org/pkg/html/template/ - the html sub-package having additional security features against attacks like code injection and </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/4322404616311752563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/go-templates-part-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4322404616311752563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4322404616311752563'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/go-templates-part-2.html' title='Go Templates - Part 2'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-4319258117897034143</id><published>2011-10-24T17:02:00.000-07:00</published><updated>2011-11-01T18:02:55.523-07:00</updated><title type='text'>Google AppEngine for Go - Installation and Setup</title><summary type="text">
Other topics in this series - Table of Contents

Setting up Google AppEngine for Go is real simple and can have you testing out functionality quickly.  There are a few things that might be better to inform you early - they are simpler than setting up certain other development environments, so you might end up searching for complexity and ending up confused for not finding it.  

A few things to </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/4319258117897034143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/google-appengine-for-go-installation.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4319258117897034143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4319258117897034143'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/10/google-appengine-for-go-installation.html' title='Google AppEngine for Go - Installation and Setup'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-1816650035134636277</id><published>2011-06-24T08:22:00.000-07:00</published><updated>2011-11-01T18:04:05.216-07:00</updated><title type='text'>Control structures - Go defer statement</title><summary type="text">Other topics in this series - Table of ContentsThe defer statement allows you to designate specified functions to be executed just before returning from the current function block.  Why would this be useful?  In programming we often have to allocate/block/lock resources, but then the program abruptly ends in between and is unable to reach the part of the code where we un-allocate/unblock/unlock </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/1816650035134636277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-go-defer-statement.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/1816650035134636277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/1816650035134636277'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-go-defer-statement.html' title='Control structures - Go defer statement'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-7333348126431702034</id><published>2011-06-23T08:03:00.000-07:00</published><updated>2012-10-03T23:17:22.393-07:00</updated><title type='text'>Control structures - Go switch case statement</title><summary type="text">Other topics in this series - Table of ContentsThe switch statement may be considered a more powerful version of the if statement where multiple if-else blocks are replaced with a single switch and multiple case blocks.  There are differences though between the two and we shall see them in some examples.  


switch any expression of type T {
case any expression of same type T: { code to be </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/7333348126431702034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-go-switch-case.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/7333348126431702034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/7333348126431702034'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-go-switch-case.html' title='Control structures - Go switch case statement'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-4719622971056073266</id><published>2011-06-22T07:16:00.000-07:00</published><updated>2012-07-18T05:26:31.741-07:00</updated><title type='text'>Control structures - Go for loop, break, continue, range</title><summary type="text">Other topics in this series - Table of ContentsThe for statement is the only available looping statement in Go.  The generic statement definition is:


for &quot;initialization statements&quot;; &quot;bool expression that has to evaluate to true&quot;; &quot;statements run prior to every loop except the first&quot; {
    //code to be executed if the boolean expression evaluates to true
}


Any of the parts of the for </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/4719622971056073266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-go-for-loop-break.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4719622971056073266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/4719622971056073266'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-go-for-loop-break.html' title='Control structures - Go for loop, break, continue, range'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-810483305711878236</id><published>2011-06-21T11:51:00.000-07:00</published><updated>2011-11-01T18:05:39.253-07:00</updated><title type='text'>Control structures - Go if else statement</title><summary type="text">Other topics in this series - Table of ContentsPrograms need to be able to take up different courses of action based on different situations - if you want to go to the beach turn left, or if you want to go the movies, turn right.  The if else statement is a simple control structure.  The general statement in Go is similar to:

if some_boolean_expression {
    // execute this block if </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/810483305711878236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-if-else-statement.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/810483305711878236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/810483305711878236'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/control-structures-if-else-statement.html' title='Control structures - Go if else statement'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-3387777135935375851</id><published>2011-06-15T05:29:00.000-07:00</published><updated>2012-07-19T02:20:21.134-07:00</updated><title type='text'>Multiple return values from Go functions</title><summary type="text">Other topics in this series - Table of ContentsGo allows you to have a function that returns multiple values.  A function definition that returns three values would be defined similar to:

func SumProdDiff(i, j int) (int, int, int)

Since there is more than one return value, it is necessary to enclose it within parentheses.  To return values from a function such as the above, you would have a </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/3387777135935375851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/return-values-from-go-functions.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3387777135935375851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3387777135935375851'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/return-values-from-go-functions.html' title='Multiple return values from Go functions'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-3515544879188888378</id><published>2011-06-14T08:03:00.000-07:00</published><updated>2012-06-30T15:40:31.802-07:00</updated><title type='text'>Go Templates</title><summary type="text">Other topics in this series - Table of Contents
See also: Go Templates - Part 2
See also: Go Templates - Part 3 - Template Sets
When a web service responds with data or html pages, there is usually a lot of content that is standard.  Within that there needs to be modifications done based on the user and what has been requested.  Templates are a way to merge generic text with more specific text.  </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/3515544879188888378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/go-templates.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3515544879188888378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3515544879188888378'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/go-templates.html' title='Go Templates'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq0cWSe4yMpZj-iBj-aVkLjVaq3c5ggIXRqSNjS9bz_P6CrrsaF6WnT1uz1xy3xVecXqIxIRU1QAQ70p-DKMjtlQBKuPzlTtkTSV9W6j0T9BHGdCxPEAiR4D1s8Ru7zalxl3WV9bXzzkZe/s72-c/templates1.png" height="72" width="72"/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-5308198965663666266</id><published>2011-06-11T16:00:00.000-07:00</published><updated>2012-07-19T15:09:07.523-07:00</updated><title type='text'>Web Programming with Go - first web Hello world</title><summary type="text">Other topics in this series - Table of ContentsIf you’ve already gone through some of the earlier tutorials in this series, you should be quite comfortable getting onto programming the web with Go.  Let’s jump right to it and then we shall analyze the code.  There is a chance that there might be people arriving here for the first time, so we shall also take some time to go over the basic concepts</summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/5308198965663666266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/web-programming-with-go-first-web-hello.html#comment-form' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/5308198965663666266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/5308198965663666266'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/web-programming-with-go-first-web-hello.html' title='Web Programming with Go - first web Hello world'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-8060742057817931346</id><published>2011-06-11T05:45:00.000-07:00</published><updated>2011-11-01T18:07:26.868-07:00</updated><title type='text'>Channels in Go - range and select</title><summary type="text">Other topics in this series - Table of ContentsChannels and rangeThis is the second part of tutorial on channels in Go.  If you haven’t yet gone through the first part, Channels in Go, please go through it now.  

Receivers of data have a problem of knowing when to stop waiting for data.  Is there more to come or is it all done?  Should we wait or should we move on?  One option is to constantly </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/8060742057817931346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/channels-in-go-range-and-select.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/8060742057817931346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/8060742057817931346'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/channels-in-go-range-and-select.html' title='Channels in Go - range and select'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-1162139519303847938</id><published>2011-06-09T16:09:00.000-07:00</published><updated>2011-11-01T18:07:47.320-07:00</updated><title type='text'>Channels in Go</title><summary type="text">Other topics in this series - Table of ContentsGoroutines allow you to run a piece of code in parallel to others.  But to employ it usefully, there are a few additional requirements - we should be able to pass data into the running process and we should be able to get data out of the running process when it is done creating it.  Channels provide the way to do that, and they work alongside </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/1162139519303847938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/channels-in-go.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/1162139519303847938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/1162139519303847938'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/channels-in-go.html' title='Channels in Go'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqc4Lihrq5-95vSE204XoXZsRSUJjDb4-JHBuLS4BElCtphUeT1OVDeYJtOtQCf5_ESr1TBF_aBueg4A39u_GwI_gpsppUK1WdfOOC4TXVDNoUMI5EGAUfxaQghapcU424nav7LXD6uJVv/s72-c/channels.png" height="72" width="72"/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8110657754519829885.post-3848488526159333806</id><published>2011-06-09T06:43:00.000-07:00</published><updated>2011-11-01T18:08:36.643-07:00</updated><title type='text'>Goroutines</title><summary type="text">Other topics in this series - Table of ContentsGoroutines allow you to execute tasks in parallel - there are many connotations to the word ‘parallel’ in computing, so, take that with a pinch of salt.  Parallel for example could mean the same program running on multiple hardware chips, on multiple machines, on multiple threads within the same machine, or multiplexed on the same thread.  The Go </summary><link rel='replies' type='application/atom+xml' href='http://golangtutorials.blogspot.com/feeds/3848488526159333806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/goroutines.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3848488526159333806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8110657754519829885/posts/default/3848488526159333806'/><link rel='alternate' type='text/html' href='http://golangtutorials.blogspot.com/2011/06/goroutines.html' title='Goroutines'/><author><name>Sathish VJ</name><uri>http://www.blogger.com/profile/15718521031646368740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG3D3LgQHbUlT0KTfML0OT_fMMDMI55zqlZAqPGL77MN_dsHQpJ7L8FWpTffbRhkh7M1uyGwCKtQeQI7Rx28ssNeXV4ovPEtpZ516SaBzvt1HxVI26QpLR4aP2bqeqraXT6fy38nxGgLEU/s72-c/parallel-execution.png" height="72" width="72"/><thr:total>6</thr:total></entry></feed>