Go - Using interfaces

Run Settings
LanguageGo
Language Version
Run Command
// Example of using interface // Author: http://github.com/klassmann package main import ( "fmt" ) type Runner interface { Execute() bool } type Job struct { Data string IsRunning bool } func (j Job) Execute() bool { fmt.Printf("Executing Job[%s]...", j.Data) return j.IsRunning } type Task struct { Name string } func (t Task) Execute() bool { fmt.Printf("The Task[%s] is executing...", t.Name) return true } // Using inteface, you can pass any type that implements a method // like Execute() bool, it is called "implicity implementation" // https://tour.golang.org/methods/10 func runProcess(r Runner) { if r.Execute() { fmt.Printf("Done.\n") } else { fmt.Printf("Fail.\n") } } func main() { fmt.Println("Job and Task processor!") j1 := Job {Data: "Job 1", IsRunning: true} j2 := Job {Data: "Job 2", IsRunning: false} j3 := Job {Data: "Job 3", IsRunning: true} t1 := Task {Name: "Task 1"} t2 := Task {Name: "Task 2"} t3 := Task {Name: "Task 3"} runProcess(j1) runProcess(j2) runProcess(j3) runProcess(t1) runProcess(t2) runProcess(t3) }
Editor Settings
Theme
Key bindings
Full width
Lines