Goでもinterfaceを定義できます。形式はtype 名前 interface{ }です。
type Enemy interface {
        Attack()
}
interfaceを実装する場合、他の言語のように明示的にimplementsを書く必要はありません。とりあえずシグネチャーの一致するメソッドを定義すればOKです。
type Moke struct {
        Name string
}
func (m *Moke) Attack() {
        fmt.Printf(m.Name + " Attacked!")
}
実際にEnemy型の変数に代入してみましょう。このとき、Attack()メソッドのレシーバーはポインタなので、代入時は&をつけてアドレスを渡すようにしないとコンパイルエラーになります。
func main() {
        var m Enemy
        m = &Moke{"Enemy"}
        m.Attack()
}
今回の全文はこちら。
package main
import (
        "fmt"
)
func main() {
        var m Enemy
        m = &Moke{"Enemy"}
        m.Attack()
}
type Enemy interface {
        Attack()
}
type Moke struct {
        Name string
}
func (m *Moke) Attack() {
        fmt.Printf(m.Name + " Attacked!")
}