gofmt to format packages// or /* */owner := obj.Owner()
if owner != user {
  obj.SetOwner(user)
}
Interface Naming By convention, one-method interfaces are named by the method name plus an -er suffix or similar modification to construct an agent noun: Reader, Writer, Formatter, CloseNotifier etc.
a := declaration a variable v may appear even if it has already been declared, provided:
this declaration is in the same scope as the existing declaration of v (if v is already declared in an outer scope, the declaration will create a new variable §),if i < f() {
    g()
}
if i < f()  // wrong!
{           // wrong!
    g()
}
if x > 0 {
  return y
}
if err := file.Chmod(0664); err != nil {
  log.Print(err)
  return err
}
The last example in the previous section demonstrates a detail of how the := short declaration form works. The declaration that calls os.Open reads,
f, err := os.Open(name)
d, err := f.Stat()
- which looks as if it declares d and err. Notice, though, that err appears in both statements. This duplication is legal: err is declared by the first statement, but only re-assigned in the second. This means that the call to f.Stat uses the existing err variable declared above, and just gives it a new value.
for key, value := range oldMap {
  newMap[key] = value
}
for key := range m {
  if key.expired() {
      delete(m, key)
  }
}
sum := 0
for _, value := range array {
  sum += value
}
func unhex(c byte) byte {
  switch {
  case '0' <= c && c <= '9':
      return c - '0'
  case 'a' <= c && c <= 'f':
      return c - 'a' + 10
  case 'A' <= c && c <= 'F':
      return c - 'A' + 10
  }
  return 0
}
func shouldEscape(c byte) bool {
  switch c {
  case ' ', '?', '&', '=', '#', '+', '%':
      return true
  }
  return false
}
var t interface{}
t = functionOfSomeType()
switch t := t.(type) {
default:
  fmt.Printf("unexpected type %T\n", t)     // %T prints whatever type t has
case bool:
  fmt.Printf("boolean %t\n", t)             // t has type bool
case int:
  fmt.Printf("integer %d\n", t)             // t has type int
case *bool:
  fmt.Printf("pointer to boolean %t\n", *t) // t has type *bool
case *int:
  fmt.Printf("pointer to integer %d\n", *t) // t has type *int
}
func squareRoot (num int) (n float, err error)
// or
func squareRoot (num int) (float, error)
// to return error if num < 0
// named return
func fileContent (filename string) (string, error) {
  f, err := os.Open(filename)
  if err != nil {
      return "", err
  }
  // defer will run the function just before exiting the function fileContents
  defer f.Close()
  // something with return   
}
For Example :
for i := 0; i < 5; i++ {
    defer fmt.Printf("%d ", i)
}
Deferred functions are executed in LIFO order, so this code will cause 4 3 2 1 0 to be printed when the function returns
A more plausible example is a simple way to trace function execution through the program. We could write a couple of simple tracing routines like this:
func trace(s string)   { fmt.Println("entering:", s) }
func untrace(s string) { fmt.Println("leaving:", s) }
// Use them like this:
func a() {
    trace("a")
    defer untrace("a")
    // do something....
}