Golang – Todas as implementações conhecidas de uma interface no VIM

Por tudo o que vim junkies lá fora, vim-go análise de código suportes antecedência usando os :GoImplements, :GoCallees, :GoChannelPeers, :GoReferrersetc. comandos Oracle.

Por exemplo, se eu tiver uma Calculatorinterface e implementação parecida com:

type Arithmetic interface{
add(float64, float64) float64
}

type
Calculator struct{}

func
(c *calculator) add(o1, o2 float64) float64 {
// ... stuff
}

Em seguida, executar :GoImplementsno vim com meu cursor sobre o type Arithmetic interfaceresultará em algo como:

calculator.go|8 col 6| interface type Arithmetic
calculator
.go|3 col 6| is implemented by pointer type *calculator

Agora, se eu mover meu cursor para a type Calculator struct{}linha e executar :GoImplements, obterei algo como:

calculator.go|3 col 6| pointer type *calculator
calculator
.go|8 col 6| implements Arithmetic

Nota: Se você obteve um erro de “comando desconhecido”, tente executar :GoInstallBinariesantes de tentar novamente.