| 
									
										
										
										
											2019-08-25 08:57:53 +03:00
										 |  |  | // Copyright © 2018 Inanc Gumus | 
					
						
							|  |  |  | // Learn Go Programming Course | 
					
						
							|  |  |  | // License: https://creativecommons.org/licenses/by-nc-sa/4.0/ | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2019-10-30 19:34:44 +03:00
										 |  |  | // For more tutorials  : https://learngoprogramming.com | 
					
						
							|  |  |  | // In-person training  : https://www.linkedin.com/in/inancgumus/ | 
					
						
							|  |  |  | // Follow me on twitter: https://twitter.com/inancgumus | 
					
						
							| 
									
										
										
										
											2019-08-25 08:57:53 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"strconv" | 
					
						
							|  |  |  | 	"time" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type book struct { | 
					
						
							|  |  |  | 	title     string | 
					
						
							|  |  |  | 	price     money | 
					
						
							|  |  |  | 	published interface{} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (b book) print() { | 
					
						
							|  |  |  | 	p := format(b.published) | 
					
						
							|  |  |  | 	fmt.Printf("%-15s: %s - (%v)\n", b.title, b.price.string(), p) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func format(v interface{}) string { | 
					
						
							|  |  |  | 	var t int | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	switch v := v.(type) { | 
					
						
							|  |  |  | 	case int: | 
					
						
							|  |  |  | 		// book{title: "moby dick", price: 10, published: 118281600}, | 
					
						
							|  |  |  | 		t = v | 
					
						
							|  |  |  | 	case string: | 
					
						
							|  |  |  | 		// book{title: "odyssey", price: 15, published: "733622400"}, | 
					
						
							|  |  |  | 		t, _ = strconv.Atoi(v) | 
					
						
							|  |  |  | 	default: | 
					
						
							|  |  |  | 		// book{title: "hobbit", price: 25}, | 
					
						
							|  |  |  | 		return "unknown" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Mon Jan 2 15:04:05 -0700 MST 2006 | 
					
						
							|  |  |  | 	const layout = "2006/01" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	u := time.Unix(int64(t), 0) | 
					
						
							|  |  |  | 	return u.Format(layout) | 
					
						
							|  |  |  | } |