title: What are the differences in outcome for panic vs log.Fatalln()?
body: <p>From the documentation on <a href="https://golang.org/pkg/log/#Fatalln" rel="noreferrer">log.Fatalln()</a>:</p>
  
  <blockquote>
    <p>func Fatalln(v ...interface{}) Fatalln is equivalent to Println()
    followed by a call to os.Exit(1).</p>
  </blockquote>
  
  <p>The <a href="https://golang.org/src/log/log.go" rel="noreferrer">source code</a> for Fatalln:</p>
  
  <pre><code>   310  // Fatalln is equivalent to Println() followed by a call to os.Exit(1).
     311  func Fatalln(v ...interface{}) {
     312      std.Output(2, fmt.Sprintln(v...))
     313      os.Exit(1)
     314  }
  </code></pre>
  
  <p>It seems the main difference is whether or not the error is recoverable (since you can recover a panic) - is there anything more significantly different between these? </p>
  
  <p>Panic's interface <a href="https://golang.org/src/builtin/builtin.go?h=func+panic" rel="noreferrer">definition</a> is:</p>
  
  <pre><code>   215  // The panic built-in function stops normal execution of the current
     216  // goroutine. When a function F calls panic, normal execution of F stops
     217  // immediately. Any functions whose execution was deferred by F are run in
     218  // the usual way, and then F returns to its caller. To the caller G, the
     219  // invocation of F then behaves like a call to panic, terminating G's
     220  // execution and running any deferred functions. This continues until all
     221  // functions in the executing goroutine have stopped, in reverse order. At
     222  // that point, the program is terminated and the error condition is reported,
     223  // including the value of the argument to panic. This termination sequence
     224  // is called panicking and can be controlled by the built-in function
     225  // recover.
     226  func panic(v interface{})
  </code></pre>
  
  <p>It appears panic does not return anything.</p>
  
  <p>Is that the primary difference? Otherwise, they seem to perform the same function in an application, assuming the panic is not recovered.</p>