Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

Go language interface


May 11, 2021 Go


Table of contents


Go language interface

The Go language provides another type of data, an interface, that defines all common methods together, and any other type that implements these methods implements that interface.

Instance

/* 定义接口 */
type interface_name interface {
   method_name1 [return_type]
   method_name2 [return_type]
   method_name3 [return_type]
   ...
   method_namen [return_type]
}

/* 定义结构体 */
type struct_name struct {
   /* variables */
}

/* 实现接口方法 */
func (struct_name_variable struct_name) method_name1() [return_type] {
   /* 方法实现 */
}
...
func (struct_name_variable struct_name) method_namen() [return_type] {
   /* 方法实现*/
}

Instance

package main

import (
    "fmt"
)

type Phone interface {
    call()
}

type NokiaPhone struct {
}

func (nokiaPhone NokiaPhone) call() {
    fmt.Println("I am Nokia, I can call you!")
}

type IPhone struct {
}

func (iPhone IPhone) call() {
    fmt.Println("I am iPhone, I can call you!")
}

func main() {
    var phone Phone

    phone = new(NokiaPhone)
    phone.call()

    phone = new(IPhone)
    phone.call()

}

In the example above, we defined an interface phone with a method call(). T hen we defined a Phone type variable in the main function and assigned it to NokiaPhone and IPhone, respectively. The call() method is then called, and the output is as follows:

I am Nokia, I can call you!
I am iPhone, I can call you!