53 lines
		
	
	
		
			1017 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1017 B
		
	
	
	
		
			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" | ||
|  | 
 | ||
|  | type item struct { | ||
|  | 	id    int | ||
|  | 	name  string | ||
|  | 	price int | ||
|  | } | ||
|  | 
 | ||
|  | type game struct { | ||
|  | 	item | ||
|  | 	genre string | ||
|  | } | ||
|  | 
 | ||
|  | func load() (games []game) { | ||
|  | 	games = addGame(games, newGame(1, 50, "god of war", "action adventure")) | ||
|  | 	games = addGame(games, newGame(2, 40, "x-com 2", "strategy")) | ||
|  | 	games = addGame(games, newGame(3, 20, "minecraft", "sandbox")) | ||
|  | 	return | ||
|  | } | ||
|  | 
 | ||
|  | func addGame(games []game, g game) []game { | ||
|  | 	return append(games, g) | ||
|  | } | ||
|  | 
 | ||
|  | func newGame(id, price int, name, genre string) game { | ||
|  | 	return game{ | ||
|  | 		item:  item{id: id, name: name, price: price}, | ||
|  | 		genre: genre, | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | func indexByID(games []game) (byID map[int]game) { | ||
|  | 	byID = make(map[int]game) | ||
|  | 	for _, g := range games { | ||
|  | 		byID[g.id] = g | ||
|  | 	} | ||
|  | 	return | ||
|  | } | ||
|  | 
 | ||
|  | func printGame(g game) { | ||
|  | 	fmt.Printf("#%d: %-15q %-20s $%d\n", | ||
|  | 		g.id, g.name, "("+g.genre+")", g.price) | ||
|  | } |