127 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.1 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 (
 | |
| 	"fmt"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	// for keeping things easy to read and type-safe
 | |
| 	type placeholder [5]string
 | |
| 
 | |
| 	zero := placeholder{
 | |
| 		"███",
 | |
| 		"█ █",
 | |
| 		"█ █",
 | |
| 		"█ █",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	one := placeholder{
 | |
| 		"██ ",
 | |
| 		" █ ",
 | |
| 		" █ ",
 | |
| 		" █ ",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	two := placeholder{
 | |
| 		"███",
 | |
| 		"  █",
 | |
| 		"███",
 | |
| 		"█  ",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	three := placeholder{
 | |
| 		"███",
 | |
| 		"  █",
 | |
| 		"███",
 | |
| 		"  █",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	four := placeholder{
 | |
| 		"█ █",
 | |
| 		"█ █",
 | |
| 		"███",
 | |
| 		"  █",
 | |
| 		"  █",
 | |
| 	}
 | |
| 
 | |
| 	five := placeholder{
 | |
| 		"███",
 | |
| 		"█  ",
 | |
| 		"███",
 | |
| 		"  █",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	six := placeholder{
 | |
| 		"███",
 | |
| 		"█  ",
 | |
| 		"███",
 | |
| 		"█ █",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	seven := placeholder{
 | |
| 		"███",
 | |
| 		"  █",
 | |
| 		"  █",
 | |
| 		"  █",
 | |
| 		"  █",
 | |
| 	}
 | |
| 
 | |
| 	eight := placeholder{
 | |
| 		"███",
 | |
| 		"█ █",
 | |
| 		"███",
 | |
| 		"█ █",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	nine := placeholder{
 | |
| 		"███",
 | |
| 		"█ █",
 | |
| 		"███",
 | |
| 		"  █",
 | |
| 		"███",
 | |
| 	}
 | |
| 
 | |
| 	// This array's type is "like": [10][5]string
 | |
| 	//
 | |
| 	// However:
 | |
| 	// + "placeholder" is not equal to [5]string in type-wise.
 | |
| 	// + Because: "placeholder" is a defined type, which is different
 | |
| 	//   from [5]string type.
 | |
| 	// + [5]string is an unnamed type.
 | |
| 	// + placeholder is a named type.
 | |
| 	// + The underlying type of [5]string and placeholder is the same:
 | |
| 	//     [5]string
 | |
| 	digits := [...]placeholder{
 | |
| 		zero, one, two, three, four, five, six, seven, eight, nine,
 | |
| 	}
 | |
| 
 | |
| 	// Explanation: digits[0]
 | |
| 	// + Each element of clock has the same length.
 | |
| 	// + So: Getting the length of only one element is OK.
 | |
| 	// + This could be: "zero" or "one" and so on... Instead of: digits[0]
 | |
| 	//
 | |
| 	// The range clause below is ~equal to the following code:
 | |
| 	// line := 0; line < 5; line++
 | |
| 	for line := range digits[0] {
 | |
| 		// Print a line for each placeholder in digits
 | |
| 		for digit := range digits {
 | |
| 			fmt.Print(digits[digit][line], "  ")
 | |
| 		}
 | |
| 		fmt.Println()
 | |
| 	}
 | |
| }
 |