Files
learngo/interfaces/03-interfaces/main.go

53 lines
1.2 KiB
Go
Raw Normal View History

2019-08-19 10:21:11 +03:00
// 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
func main() {
var (
mobydick = book{title: "moby dick", price: 10}
minecraft = game{title: "minecraft", price: 20}
tetris = game{title: "tetris", price: 5}
rubik = puzzle{title: "rubik's cube", price: 5}
)
var store list
store = append(store, &minecraft, &tetris, mobydick, rubik)
tetris.discount(.8)
// printer(tetris).discount(.8)
store.print()
}
/*
var my list
// + only the `*game` have methods.
// + `game` doesn't have any methods.
// + `item` interface couldn't be satisfied with a `game` value.
// + it can only be satisfied with a `*game` value.
// my = my.add(minecraft)
my = append(my, &minecraft)
my = append(my, &tetris)
my = append(my, &mobydick)
// interface value stores a pointer to minecraft
minecraft.discount(.5)
my.list()
my.discount(.5)
my.list()
*/
// ! cannot add mobydick to the store: it's a book type, not a game type.
// interfaces to the rescue!
// mobydick := book{title: "moby dick", price: 10}
// my.add(&mobydick)
// ----------------------------------------------------------------