Defining a type that satisfies an interface in Go Programming Language


Defines an interface type named Employee with two methods. Then it defines a type named Emp that satisfies Employee.

We define all the methods on Emp that it needs to satisfy Employee

If a type has all the methods declared in an interface, then no further declarations needed explicitly to say that Emp satisfies Employee.

Declares an e1 variable with Employee as its type, then creates a Emp value and assigns it to e1.

Example

package main

import "fmt"

// Employee is an interface for printing employee details
type Employee interface {
	PrintName(name string)
	PrintSalary(basic int, tax int) int
}

// Emp user-defined type
type Emp int

// PrintName method to print employee name
func (e Emp) PrintName(name string) {
	fmt.Println("Employee Id:\t", e)
	fmt.Println("Employee Name:\t", name)
}

// PrintSalary method to calculate employee salary
func (e Emp) PrintSalary(basic int, tax int) int {
	var salary = (basic * tax) / 100
	return basic - salary
}

func main() {
	var e1 Employee
	e1 = Emp(1)
	e1.PrintName("John Doe")
	fmt.Println("Employee Salary:", e1.PrintSalary(25000, 5))
}
Most Helpful This Week