/*
 * composites.go
 *-------------------------------------------------------
 * array, slice, map
 * Jim Fawcett, CSE775 - Distributed Objects, Spring 2016
 *-------------------------------------------------------
 */
 package main
 
 import (
   "fmt"
   "fawcett/utils"
 )
 
 func main() {
   /* arrays */
   utils.TitleM("Demonstrating composites")
   
   fmt.Println()
   utils.Title("Arrays:")
   a := [3]int { 1, 2, 3 }  
   fmt.Printf("\n  %v", a)
   
   as := [...]string { "one", "two", "three", "four", "five" }
   fmt.Printf("\n  %v\n", as)

   /* slices */
   utils.Title("Slices:")
   courses := [...]string { 
     "CSE681", "CSE686", "CSE687", "CSE775", "CSE776", "CSE784" }
   fmt.Printf("\n  %v", courses)	 
   
   Fall1 := courses[0:1]  // slice 1
   Fall2 := courses[4:6]  // slice 2
   Fall := Fall1
   for _, c := range Fall2 {  // appending to slice 1
     Fall = append(Fall, c)
   }
   Spring := courses[1:4]
   fmt.Printf("\n  Fall courses: %v, Spring courses: %v\n", Fall, Spring)

   /* maps */
   utils.Title("Maps:")
   crs := make(map[string]string)
   crs["CSE681"] = "SMA"
   crs["CSE686"] = "IP"
   crs["CSE687"] = "OOD"
   crs["CSE775"] = "DO"
   crs["CSE776"] = "DP"
   crs["CSE784"] = "SS"
   for id, name := range crs {
     fmt.Printf("\n  %v - %v", id, name)
   }
   fmt.Println()
 }