| 
									
										
										
										
											2019-01-28 15:49:49 +03:00
										 |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"io/ioutil" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 	"sort" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // --------------------------------------------------------- | 
					
						
							| 
									
										
										
										
											2019-03-06 19:41:06 +03:00
										 |  |  | // EXERCISE: Sort and write items to a file with their ordinals | 
					
						
							| 
									
										
										
										
											2019-01-28 15:49:49 +03:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2019-03-06 19:41:06 +03:00
										 |  |  | //  Use the previous exercise. | 
					
						
							| 
									
										
										
										
											2019-01-28 15:49:49 +03:00
										 |  |  | // | 
					
						
							|  |  |  | //  This time, print the sorted items with ordinals | 
					
						
							|  |  |  | //  (see the expected output) | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // EXPECTED OUTPUT | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //   go run main.go | 
					
						
							|  |  |  | //     Send me some items and I will sort them | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //   go run main.go orange banana apple | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //   cat sorted.txt | 
					
						
							|  |  |  | //     1. apple | 
					
						
							|  |  |  | //     2. banana | 
					
						
							|  |  |  | //     3. orange | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // HINTS | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //   ONLY READ THIS IF YOU GET STUCK | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //   + You can use strconv.AppendInt function to append an int | 
					
						
							|  |  |  | //     to a byte slice. strconv contains a lot of functions for appending | 
					
						
							| 
									
										
										
										
											2019-03-06 19:41:06 +03:00
										 |  |  | //     other basic types to []byte slices as well. | 
					
						
							| 
									
										
										
										
											2019-01-28 15:49:49 +03:00
										 |  |  | // | 
					
						
							|  |  |  | //   + You can append individual characters to a byte slice using | 
					
						
							| 
									
										
										
										
											2019-03-06 19:41:06 +03:00
										 |  |  | //     rune literals (because: rune literal are typeless numerics): | 
					
						
							| 
									
										
										
										
											2019-01-28 15:49:49 +03:00
										 |  |  | // | 
					
						
							|  |  |  | //     var slice []byte | 
					
						
							|  |  |  | //     slice = append(slice, 'h', 'i', ' ', '!') | 
					
						
							|  |  |  | //     fmt.Printf("%s\n", slice) | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | //     Above code prints: hi ! | 
					
						
							|  |  |  | // --------------------------------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							|  |  |  | 	items := os.Args[1:] | 
					
						
							|  |  |  | 	if len(items) == 0 { | 
					
						
							|  |  |  | 		fmt.Println("Send me some items and I will sort them") | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	sort.Strings(items) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var data []byte | 
					
						
							|  |  |  | 	for _, s := range items { | 
					
						
							|  |  |  | 		data = append(data, s...) | 
					
						
							|  |  |  | 		data = append(data, '\n') | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	err := ioutil.WriteFile("sorted.txt", data, 0644) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		fmt.Println(err) | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |