Skip to content

Instantly share code, notes, and snippets.

Last active Nov 5, 2019
What would you like to do?
// :collection Essential Go
package main
import (
// :show start
// Stringer is an interface with a single method
type Stringer interface {
String() string
// User struct that implements Stringer interface
type User struct {
Name string
func (u *User) String() string {
return u.Name
// Any type can implement an interface. Here we create
// an alias of int type an implement Stringer interface
type MyInt int
func (mi MyInt) String() string {
return strconv.Itoa(int(mi))
// printTypeAndString accepts an interface. 's' can be any value
// that implements Stringer interface
func printTypeAndString(s Stringer) {
fmt.Printf("%T: %s\n", s, s)
func main() {
u := &User{Name: "John"}
n := MyInt(5)
// :show end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment