// Copyright © 2018 Inanc Gumus // Learn Go Programming Course // License: https://creativecommons.org/licenses/by-nc-sa/4.0/ // // For more tutorials : https://learngoprogramming.com // In-person training : https://www.linkedin.com/in/inancgumus/ // Follow me on twitter: https://twitter.com/inancgumus 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() } }