Go Learn

󰃭 2013-09-08

Today I decided to try out Go.

What is Go?

Go is a programming language designed and developed at Google. It was designed by really smart people: Robert Griesemer, Rob Pike, and Ken Thompson.

Syntax-wise, it looks a lot like C, except the ending semicolons are optional, and parentheses for if, for, etc are not required.

Here’s a gist showing some syntax:

It’s a fibonacci calculator made using a closure, caching previously calculated numbers.

Features

  • Statically typed (but types can be inferred).
  • Concurrency baked in (goroutines, channels).
  • Garbage collection.
  • Fast compile times.
  • No classes (you attach functions to structs instead).
  • No inheritance (Go makes heavy use of interfaces).
  • No overloading.
  • No pointer arithmetic.

Coding in Go

To learn Go, I first did a quick read of Learn X in Y Minutes to get a grip of the syntax.

Then, I went over to their official website and took the tour.

Afterwards, I wanted to get a working application. Go includes an http server in their official packages, so I decided to make a web application.

After a little searching, I found they had a tutorial aimed at web applications, so I decided to use exactly that. Go documentation rocks!

I followed the tutorial along and was able to get a wiki type of website up and running in about 20 minutes. After that, I decided I wanted to add markdown support to it, and a few more features, like creating new pages and deleting pages.

One thing I really liked about Go is that it comes with a lot of useful packages so you can start working right away. For example, I thought I would have to write some sort of templating system, but Go already comes with one. And it’s context aware! So you don’t have to worry about escaping things!

Packages

Go’s packaging system allows you to get packages from VCS repositories. For example, to add markdown support to my wiki, I added knieriem’s markdown package as a git submodule in my project.

Screenshots of my development process

development process

crud view

crud edit

As usual, my project is on Github.



More posts like this

Messing Around With Trig

󰃭 2013-03-05 | #canvas #fun #javascript #programming-projects

Yesterday after work I had some time to waste, so I decided to do some silly things in javascript with a canvas and some trigonometric magic. Move your mouse around to change some variables, and click to toggle clearing of the canvas. You can achieve some trippy effects! colorful sine wave colorful flower These are all on my github, in case you wanna take a look.

Continue reading 


Rainbow Tunnel

󰃭 2013-03-07 | #canvas #fun #javascript #programming-projects

Today I had some more time to code something fun, so I decided to make a tunnel of sorts. The trick is really simple, first you just draw rings around the center of the page, and tweak their position a bit depending on the position of the mouse. To achieve the rainbow effect, you just have to make it so each ring has its hue value a little higher than the ring before it, and increase all of the rings’ hues each frame.

Continue reading 