Golang - All Known Implementations of An Interface In VIM
For all you vim junkies out there, vim-go supports advance code analysis using the :GoImplements
, :GoCallees
, :GoChannelPeers
, :GoReferrers
etc. oracle commands.
For example, if I have a Calculator
interface and implementation that looks like:
type Arithmetic interface{
add(float64, float64) float64
}
type Calculator struct{}
func (c *calculator) add(o1, o2 float64) float64 {
// ... stuff
}
Then running :GoImplements
in vim with my cursor on the type Arithmetic interface
will yield something like:
calculator.go|8 col 6| interface type Arithmetic
calculator.go|3 col 6| is implemented by pointer type *calculator
Now if I moved my cursor to the type Calculator struct{}
line and run :GoImplements
, I will get something like:
calculator.go|3 col 6| pointer type *calculator
calculator.go|8 col 6| implements Arithmetic
Note: If you got an "unknown command" error, try execute :GoInstallBinaries
before re-trying.
Written by Ivan Sim
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Vim
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#