130 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			130 lines
		
	
	
		
			2.8 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"
							 | 
						||
| 
								 | 
							
									"strings"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func main() {
							 | 
						||
| 
								 | 
							
									var (
							 | 
						||
| 
								 | 
							
										names     [3]string  // The names of your best three friends
							 | 
						||
| 
								 | 
							
										distances [5]int     // The distances to five different locations
							 | 
						||
| 
								 | 
							
										data      [5]byte    // A data buffer with five bytes of capacity
							 | 
						||
| 
								 | 
							
										ratios    [1]float64 // Currency exchange ratios only for a single currency
							 | 
						||
| 
								 | 
							
										alives    [4]bool    // Up/Down status of four different web servers
							 | 
						||
| 
								 | 
							
										zero      [0]byte    // A byte array that doesn't occupy memory space
							 | 
						||
| 
								 | 
							
									)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									names[0] = "Einstein"
							 | 
						||
| 
								 | 
							
									names[1] = "Tesla"
							 | 
						||
| 
								 | 
							
									names[2] = "Shepard"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									distances[0] = 50
							 | 
						||
| 
								 | 
							
									distances[1] = 40
							 | 
						||
| 
								 | 
							
									distances[2] = 75
							 | 
						||
| 
								 | 
							
									distances[3] = 30
							 | 
						||
| 
								 | 
							
									distances[4] = 125
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									data[0] = 'H'
							 | 
						||
| 
								 | 
							
									data[1] = 'E'
							 | 
						||
| 
								 | 
							
									data[2] = 'L'
							 | 
						||
| 
								 | 
							
									data[3] = 'L'
							 | 
						||
| 
								 | 
							
									data[4] = 'O'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									ratios[0] = 3.14145
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									alives[0] = true
							 | 
						||
| 
								 | 
							
									alives[1] = false
							 | 
						||
| 
								 | 
							
									alives[2] = true
							 | 
						||
| 
								 | 
							
									alives[3] = false
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// zero[0] = "BOMB!"
							 | 
						||
| 
								 | 
							
									_ = zero
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// =========================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									separator := "\n" + strings.Repeat("=", 20) + "\n"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("names", separator)
							 | 
						||
| 
								 | 
							
									for i := 0; i < len(names); i++ {
							 | 
						||
| 
								 | 
							
										fmt.Printf("names[%d]: %q\n", i, names[i])
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\ndistances", separator)
							 | 
						||
| 
								 | 
							
									for i := 0; i < len(distances); i++ {
							 | 
						||
| 
								 | 
							
										fmt.Printf("distances[%d]: %d\n", i, distances[i])
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\ndata", separator)
							 | 
						||
| 
								 | 
							
									for i := 0; i < len(data); i++ {
							 | 
						||
| 
								 | 
							
										// try the %c verb
							 | 
						||
| 
								 | 
							
										fmt.Printf("data[%d]: %d\n", i, data[i])
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\nratios", separator)
							 | 
						||
| 
								 | 
							
									for i := 0; i < len(ratios); i++ {
							 | 
						||
| 
								 | 
							
										fmt.Printf("ratios[%d]: %.2f\n", i, ratios[i])
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\nalives", separator)
							 | 
						||
| 
								 | 
							
									for i := 0; i < len(alives); i++ {
							 | 
						||
| 
								 | 
							
										fmt.Printf("alives[%d]: %t\n", i, alives[i])
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// no loop for zero elements
							 | 
						||
| 
								 | 
							
									fmt.Print("\nzero", separator)
							 | 
						||
| 
								 | 
							
									for i := 0; i < len(zero); i++ {
							 | 
						||
| 
								 | 
							
										fmt.Printf("zero[%d]: %d\n", i, zero[i])
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// =========================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// you know how this works :) don't be freaked out!
							 | 
						||
| 
								 | 
							
									fmt.Printf(`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%s
							 | 
						||
| 
								 | 
							
								FOR RANGES
							 | 
						||
| 
								 | 
							
								%[1]s
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`, strings.Repeat("~", 30))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("names", separator)
							 | 
						||
| 
								 | 
							
									for i, v := range names {
							 | 
						||
| 
								 | 
							
										fmt.Printf("names[%d]: %q\n", i, v)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\ndistances", separator)
							 | 
						||
| 
								 | 
							
									for i, v := range distances {
							 | 
						||
| 
								 | 
							
										fmt.Printf("distances[%d]: %d\n", i, v)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\ndata", separator)
							 | 
						||
| 
								 | 
							
									for i, v := range data {
							 | 
						||
| 
								 | 
							
										// try the %c verb
							 | 
						||
| 
								 | 
							
										fmt.Printf("data[%d]: %d\n", i, v)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\nratios", separator)
							 | 
						||
| 
								 | 
							
									for i, v := range ratios {
							 | 
						||
| 
								 | 
							
										fmt.Printf("ratios[%d]: %.2f\n", i, v)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Print("\nalives", separator)
							 | 
						||
| 
								 | 
							
									for i, v := range alives {
							 | 
						||
| 
								 | 
							
										fmt.Printf("alives[%d]: %t\n", i, v)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// no loop for zero elements
							 | 
						||
| 
								 | 
							
									fmt.Print("\nzero", separator)
							 | 
						||
| 
								 | 
							
									for i, v := range zero {
							 | 
						||
| 
								 | 
							
										fmt.Printf("zero[%d]: %d\n", i, v)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |