| 
             Go’s structs are typed collections of fields. They’re useful for grouping data together to form records.  | 
          |
            ![]()  
          
           | 
        |
            
          
           | 
        |
| 
             This   | 
          
            
          
           | 
        
| 
             
  | 
          
            
          
           | 
        
| 
             Go is a garbage collected language; you can safely return a pointer to a local variable - it will only be cleaned up by the garbage collector when there are no active references to it.  | 
          
            
          
           | 
        
            
          
           | 
        |
| 
             This syntax creates a new struct.  | 
          
            
          
           | 
        
| 
             You can name the fields when initializing a struct.  | 
          
            
          
           | 
        
| 
             Omitted fields will be zero-valued.  | 
          
            
          
           | 
        
| 
             An   | 
          
            
          
           | 
        
| 
             It’s idiomatic to encapsulate new struct creation in constructor functions  | 
          
            
          
           | 
        
| 
             Access struct fields with a dot.  | 
          
            
          
           | 
        
| 
             You can also use dots with struct pointers - the pointers are automatically dereferenced.  | 
          
            
          
           | 
        
| 
             Structs are mutable.  | 
          
            
          
           | 
        
| 
             If a struct type is only used for a single value, we don’t have to give it a name. The value can have an anonymous struct type. This technique is commonly used for table-driven tests.  | 
          
            
          
           | 
        
            
          
           | 
        
Next example: Methods.