Go - Interfaces

Go programming offers every other data type called interfaces which represents set of method signatures. The struct data type implements these interfaces to have approach definitions for the method signature of the interfaces.

/* define an interface */
type interface_name interface 
   method_name1 [return_type]
   method_name2 [return_type]
   method_name3 [return_type]
   Method_namen [return_type]

/* define a struct */
kind struct_name struct 
   /* variables */

/* enforce interface strategies*/
func (struct_name_variable struct_name) method_name1() [return_type] 
   /* technique implementation */

Func (struct_name_variable struct_name) method_namen() [return_type] 
   /* technique implementation */


package major

import ("fmt" "math")

/* outline an interface */
kind Shape interface 
   area() float64

/* define a circle */
type Circle struct 
   x,y,radius float64

/* outline a rectangle */
type Rectangle struct 
   width, height float64

/* define a technique for circle (implementation of Shape.Area())*/
func(circle Circle) vicinity() float64 
   go back math.Pi * circle.Radius * circle.Radius

/* outline a way for rectangle (implementation of Shape.Place())*/
func(rect Rectangle) region() float64 
   return rect.Width * rect.Peak

/* outline a technique for shape */
func getArea(shape Shape) float64 
   go back shape.Vicinity()

func predominant() 
   circle := Circlex:0,y:0,radius:5
   rectangle := Rectangle width:10, top:five
   fmt.Printf("Circle vicinity: %fn",getArea(circle))
   fmt.Printf("Rectangle vicinity: %fn",getArea(rectangle))

When the above code is compiled and done, it produces the following end result −

Circle region: 78.539816
Rectangle place: 50.000000