DEV Community

Divyanshu Shekhar
Divyanshu Shekhar

Posted on

Golang Interface: The Art of Polymorphism in Go Programming

Have you ever wondered how Golang manages to incorporate the concept of polymorphism, similar to object-oriented programming? The secret lies in the Golang interface! In this blog, we’re going to embark on an exciting journey exploring the world of the Golang interface. From understanding their declaration and implementation to unraveling the mysteries of empty interfaces, embedding, and type assertions, we have a wealth of knowledge waiting to be discovered. So, fasten your seatbelts and get ready to dive into this knowledge-packed blog. And hey, don’t forget to stick around for a fascinating fun fact about the Golang interface at the end!

What is Golang Interface?

In Go, an interface is a special type that defines a set of method signatures. It serves as a blueprint for the expected behavior of a type. By using interfaces, we can write code that operates on different types without worrying about their specific implementations. It promotes flexibility and modularity in our code.

For example, in a Zoo program, we can define an Animal interface with standard methods like MakeSound() and Move(), allowing us to work with different types of animals seamlessly.

Defining Interface in Golang

So, we’ve just explored the definition of a Golang interface. Are you feeling a bit confused? Well, I must admit that I also find it a bit perplexing when reading the definition alone. The good news is that the best way to truly grasp any concept is to dive into how it works in practice. Once we understand its workings, we’ll be able to connect the dots and make sense of that definition. So, let’s waste no time and take a closer look at the syntax of a Golang interface.

In Go, defining an interface is quite easy I would say. We use the type keyword followed by the name we want to assign to our interface. For instance, if we want to create an interface called “Messenger”, we would write:

type Messenger interface {
    // Method declarations go here
}

// OR

type Messenger = interface {
    // Method declarations go here
}
Enter fullscreen mode Exit fullscreen mode

To define the methods that our interface should have, we simply list them within the curly braces. Each method is declared without any implementation details, only specifying the method signature. The method signature consists of the method name, any input parameters it requires (if applicable), and the return type(s) (if applicable).

Interface with the method signature:

type Messenger interface {
    Send(message string) error
    Receive() (string, error)
}

// OR

type Messenger = interface {
    Send(message string) error
    Receive() (string, error)
}
Enter fullscreen mode Exit fullscreen mode

In this example, the Messenger interface specifies two methods:

Send, which takes a message of type string and returns an error, and
Receive, which returns a string and an error.
Any type that implements these two methods will automatically satisfy the Messenger interface.

Next, let’s explore how we can implement these interfaces and witness their functionality firsthand.

Read the full blog on: Golang Interface. Find the blog on Google. Golang Interface.

Top comments (0)