From 83b32e4170283d5759468251f2ce785803992618 Mon Sep 17 00:00:00 2001 From: Inanc Gumus Date: Mon, 2 Sep 2019 16:48:38 +0300 Subject: [PATCH] update: interface promoted methods --- .../book.go | 0 .../game.go | 0 .../list.go | 13 ++++--------- .../main.go | 0 .../money.go | 0 .../product.go | 0 .../puzzle.go | 0 .../toy.go | 0 8 files changed, 4 insertions(+), 9 deletions(-) rename interfaces/{08-method-embedding => 08-promoted-methods}/book.go (100%) rename interfaces/{08-method-embedding => 08-promoted-methods}/game.go (100%) rename interfaces/{08-method-embedding => 08-promoted-methods}/list.go (73%) rename interfaces/{08-method-embedding => 08-promoted-methods}/main.go (100%) rename interfaces/{08-method-embedding => 08-promoted-methods}/money.go (100%) rename interfaces/{08-method-embedding => 08-promoted-methods}/product.go (100%) rename interfaces/{08-method-embedding => 08-promoted-methods}/puzzle.go (100%) rename interfaces/{08-method-embedding => 08-promoted-methods}/toy.go (100%) diff --git a/interfaces/08-method-embedding/book.go b/interfaces/08-promoted-methods/book.go similarity index 100% rename from interfaces/08-method-embedding/book.go rename to interfaces/08-promoted-methods/book.go diff --git a/interfaces/08-method-embedding/game.go b/interfaces/08-promoted-methods/game.go similarity index 100% rename from interfaces/08-method-embedding/game.go rename to interfaces/08-promoted-methods/game.go diff --git a/interfaces/08-method-embedding/list.go b/interfaces/08-promoted-methods/list.go similarity index 73% rename from interfaces/08-method-embedding/list.go rename to interfaces/08-promoted-methods/list.go index ec401e1..381de50 100644 --- a/interfaces/08-method-embedding/list.go +++ b/interfaces/08-promoted-methods/list.go @@ -9,11 +9,12 @@ package main import "fmt" -type printer interface { +type item interface { print() + discount(float64) } -type list []printer +type list []item func (l list) print() { if len(l) == 0 { @@ -27,13 +28,7 @@ func (l list) print() { } func (l list) discount(ratio float64) { - type discounter interface { - discount(float64) - } - for _, it := range l { - if it, ok := it.(discounter); ok { - it.discount(ratio) - } + it.discount(ratio) } } diff --git a/interfaces/08-method-embedding/main.go b/interfaces/08-promoted-methods/main.go similarity index 100% rename from interfaces/08-method-embedding/main.go rename to interfaces/08-promoted-methods/main.go diff --git a/interfaces/08-method-embedding/money.go b/interfaces/08-promoted-methods/money.go similarity index 100% rename from interfaces/08-method-embedding/money.go rename to interfaces/08-promoted-methods/money.go diff --git a/interfaces/08-method-embedding/product.go b/interfaces/08-promoted-methods/product.go similarity index 100% rename from interfaces/08-method-embedding/product.go rename to interfaces/08-promoted-methods/product.go diff --git a/interfaces/08-method-embedding/puzzle.go b/interfaces/08-promoted-methods/puzzle.go similarity index 100% rename from interfaces/08-method-embedding/puzzle.go rename to interfaces/08-promoted-methods/puzzle.go diff --git a/interfaces/08-method-embedding/toy.go b/interfaces/08-promoted-methods/toy.go similarity index 100% rename from interfaces/08-method-embedding/toy.go rename to interfaces/08-promoted-methods/toy.go