Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "fmt"
- type pizza interface {
- getPrice() int
- }
- type tomatoTopping struct {
- pizza pizza
- }
- func (c *tomatoTopping) getPrice() int {
- pizzaPrice := c.pizza.getPrice()
- return pizzaPrice + 7
- }
- type veggeMania struct {
- }
- func (p *veggeMania) getPrice() int {
- return 15
- }
- type cheeseTopping struct {
- pizza pizza
- }
- func (c *cheeseTopping) getPrice() int {
- pizzaPrice := c.pizza.getPrice()
- return pizzaPrice + 10
- }
- func main() {
- pizza := &veggeMania{}
- //Add cheese topping
- pizzaWithCheese := &cheeseTopping{
- pizza: pizza,
- }
- //Add tomato topping
- pizzaWithCheeseAndTomato := &tomatoTopping{
- pizza: pizzaWithCheese,
- }
- fmt.Printf("Price of veggeMania with tomato and cheese topping is %d\n", pizzaWithCheeseAndTomato.getPrice())
- }
Add Comment
Please, Sign In to add comment