51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|   | // For more tutorials: https://blog.learngoprogramming.com | ||
|  | // | ||
|  | // Copyright © 2018 Inanc Gumus | ||
|  | // Learn Go Programming Course | ||
|  | // License: https://creativecommons.org/licenses/by-nc-sa/4.0/ | ||
|  | // | ||
|  | 
 | ||
|  | package main | ||
|  | 
 | ||
|  | import ( | ||
|  | 	s "github.com/inancgumus/prettyslice" | ||
|  | ) | ||
|  | 
 | ||
|  | func main() { | ||
|  | 	// #1: arrays and non-empty slice literals create an array. | ||
|  | 	// For the arrays, it's explicit, but for the slices, | ||
|  | 	// it's done implicitly, behind the scenes. | ||
|  | 
 | ||
|  | 	grades := [...]float64{40, 10, 20, 50, 60, 70} // #1 | ||
|  | 	// grades := []float64{40, 10, 20, 50, 60, 70} // #4 | ||
|  | 
 | ||
|  | 	// #5: let's break the connection | ||
|  | 	// #6: comment-out | ||
|  | 	// var newGrades []float64 | ||
|  | 	// newGrades = append(newGrades, grades...) | ||
|  | 
 | ||
|  | 	// #6: shortcut: []float64(nil) is a nil float64 slice | ||
|  | 	// newGrades := append([]float64(nil), grades...) | ||
|  | 
 | ||
|  | 	// #2: cheap: slicing doesn't allocate new memory (array). | ||
|  | 	// front := grades[:3] | ||
|  | 
 | ||
|  | 	// front := newGrades[:3] // #5 | ||
|  | 
 | ||
|  | 	// #3: sort its first segment | ||
|  | 	// sort.Float64s(front) | ||
|  | 
 | ||
|  | 	// #7: new slices look at the same backing array | ||
|  | 	// front, front2, front3, newGrades, they all have the same backing array | ||
|  | 	// front2 := front[:3] | ||
|  | 	// front3 := front | ||
|  | 
 | ||
|  | 	s.PrintBacking = true       // #1 | ||
|  | 	s.MaxPerLine = 7            // #1 | ||
|  | 	s.Show("grades", grades[:]) // #1 | ||
|  | 	// s.Show("newGrades", newGrades) // #5 | ||
|  | 	// s.Show("front", front)         // #2 | ||
|  | 	// s.Show("front2", front2)       // #7 | ||
|  | 	// s.Show("front3", front3)       // #7 | ||
|  | } |