64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.5 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"
 | |
| 
 | |
| // STORY:
 | |
| // You want to compare two bookcases,
 | |
| // whether they're equal or not.
 | |
| 
 | |
| func main() {
 | |
| 	type (
 | |
| 		// integer int
 | |
| 
 | |
| 		bookcase [5]int
 | |
| 		cabinet  [5]int
 | |
| 		//          ^- try changing this to: integer
 | |
| 		//             but first: uncomment the integer type above
 | |
| 	)
 | |
| 
 | |
| 	blue := bookcase{6, 9, 3, 2, 1}
 | |
| 	red := cabinet{6, 9, 3, 2, 1}
 | |
| 
 | |
| 	fmt.Print("Are they equal? ")
 | |
| 
 | |
| 	if cabinet(blue) == red {
 | |
| 		fmt.Println("✅")
 | |
| 	} else {
 | |
| 		fmt.Println("❌")
 | |
| 	}
 | |
| 
 | |
| 	fmt.Printf("blue: %#v\n", blue)
 | |
| 	fmt.Printf("red : %#v\n", bookcase(red))
 | |
| 
 | |
| 	// ------------------------------------------------
 | |
| 	// The underlying type of an unnamed type is itself.
 | |
| 	//
 | |
| 	//   [5]integer's underlying type: [5]integer
 | |
| 	//   [5]int's underlying type    : [5]int
 | |
| 	//
 | |
| 	//   > [5]integer and [5]int are different types.
 | |
| 	//   > Their memory layout is not important.
 | |
| 	//   > Their types are not the same.
 | |
| 
 | |
| 	// _ = [5]integer{} == [5]int{}
 | |
| 
 | |
| 	// ------------------------------------------------
 | |
| 	// An unnamed and a named type can be compared,
 | |
| 	// if they've identical underlying types.
 | |
| 	//
 | |
| 	//   [5]integer's underlying type: [5]integer
 | |
| 	//   cabinet's underlying type   : [5]integer
 | |
| 	//
 | |
| 	// Note: Assuming the cabinet's type definition is like so:
 | |
| 	//       type cabinet [5]integer
 | |
| 
 | |
| 	// _ = [5]integer{} == cabinet{}
 | |
| }
 |