Defining an Interface

type Interface_Name interface {
    Method_Name(Input) (Outputs)
}

Keyword : type, interface

Interface_name user provide a descriptive name

Within the { } curly bracket, method sets are a list of method_name has been defined method name with parameters, return. No implementation details.

type Speaker interface {
   Speak() string
}

https://golang.org/pkg/os/#FileInfo

type FileInfo
A FileInfo describes a file and is returned by Stat and Lstat.

type FileInfo interface {
    Name() string       // base name of the file
    Size() int64        // length in bytes for regular files; system-dependent for others
    Mode() FileMode     // file mode bits
    ModTime() time.Time // modification time
    IsDir() bool        // abbreviation for Mode().IsDir()
    Sys() interface{}   // underlying data source (can return nil)
}

the FileInfo interface has the following method sets:

Name() string // return a string

Size() int64 // return int64

Mode() FileMode // return FileMode type

ModTime() time.Time

IsDir() bool // return a bool type

Sys() interface{} // return an interface type