Hello There!
					I work for Archetype Consulting
                    
                    Solutions Architect by Day
                    Computer Scientist the rest of the time
                    
                    Golang Enthusiast.
                
                
                
					Why Go?
                    
                        - Easy to learn
- Built for the Web
- Community Oriented by Design
- High level & Low level Capabilites
- Small & Simple, yet Complete
What Can Go Do?
                    
                        - Websites (yes JavaScript will still be involved)
- Mobile Applications
- Systems Programming
- ...
History of Go
                    
                        - Originated as an experiment at Google by Robert Griesemer, Rob Pike & Ken Thompson
- Goal: Development speed of Python with the performance and safety of C or C++
- Created at Google in 2007
Design Principles I
                    Regular & Simple
                    
                        - Few Keywords
                                - if, range, for, else ... (21 more)
- Main Primitive Types
                                - boolean, numerics (uint0x, int0x, float0x, complex0x), strings
- Main Non-Primitive Types
                                - arrays, slices, maps, structs, pointers, functions, interfaces, channels, method sets
- Statically Typed
                                
                                    - reduces runtime type errors
- Compiler enforced variables and imports (YAGNI)
- Dyanamic Features
                            
                                - Fast Compilation
- Garbage Collection & Cross Plaftform
Design Principles II
                    Design Abstractly, Code Instinctively
                    
                        - Composition over Inheritance
                                - No Inheritance; Less planning, Better Extensibility
- Program to interfaces, not implementations
                                - Interface programming is a staple and is fundamentally simple.
- Polymorphism
                                - Interface Methods, Embedded Structs (Subtyping) & Identifier Promotion (Overriding)
 
                
            
                
                    Design Principles III
                    Page Light, Style Consistent
                    Encourages code that is easier to read and maintain
                    
                        - Style can be enforced by the language
                            - Gofmt tool to format your code, Godoc tool to document your code
- Documentation generated by the language
                            - Godoc tool to create documentation based on simple commenting rules
 
                
            
                
                    Design Principles III Continued
                    Page Light, Style Consistent
                    Dynamic & Concise Syntax
                            
// This sample program demonstrates a simple web server.
package main
import (
    "net/http"
)
func main() {
    fs := http.FileServer(http.Dir("/home/me/mywebsite/static/"))
    
    http.Handle("/", fs)
    
    http.ListenAndServe(":3000", nil)
}
                            
                
                
					Lightening Lessons in Basic Go
                     
				
            
                
            
                
                
                
                
                
					Out of Scope Topics
                    (Future Talks?)
                    
                        - Pointers
- Maps
- Multi-Dimensional Structures
- Go Types In Depth
- Packaging, Project Structure & Tooling
- OOP: Composition, Interfaces, Polymorphism...
- Concurrency
- Cgo
- Gotchas
- ...