Godoogle is a Go API search engine, which allows you to search by approximate function type signature, including generics.
Aim: Godoogle is to Go what Hoogle is to Haskell.
# First run
go run script/writeSigGraph.go
mv sigGraph.json server/res/
# Each run
cd server/
go run .Then visit localhost:8888.
WIP: Be configurable. (By now: Mutate func InitFuncDatabase() in collect/candidates.go ...)
- Smarter
- Fuzzy search by distance.
- Adapt to various inputs.
- Type params, e.g.
[T any] func(bool, T, T) T - Support non-builtin types,
e.g.
func() time.Time,func(l sync.Locker) *sync.Cond - Copy straight from code / Godoogle result, e.g.
func InSlice[T comparable](item T, slice []T) bool - No
funcnor name, e.g.[T comparable](item T, slice []T) bool - Omit type param, e.g.
func(...T) []T,func (T, []T) bool
- Type params, e.g.
- Imagine more.
-
func(X,Y) (Z)->func(X) (Z,W) -
func(X,Y) (Z)<-func(X) (Z,W) -
func(X,Y) (Z,W)->func(Y,X) (W,Z) -
[T comparable]func(...T) []T->[T any]func(...T) []T -
[E comparable](s []E, v E)->[S ~[]E, E comparable](s S, v E) -
func(X)<->func(*X)
-
- First things first.
-
Query
func(string) int⊢func(s string) (int, error)>func(s string) (p vendor/golang.org/x/text/unicode/bidi.Properties, sz int)
-
Query
- Learn from Hoogle, Roogle, *oogle.
- Wider
- Standard library and a few 3rd party libs.
- Support methods.
- Text-based search candidates, rather than “import-based”.
- Show https://pkg.go.dev/builtin#max (treated as not exported now).
- Cover https://pkg.go.dev (Not the functionality, just the range).
- Customize search candidates, for self-hosted user.
- Faster
- Memoization of shortest paths in SigGraph, the graph with func signature as vertex and distance as edge weight.
- Text.
- DB (RDB? Graph DB?).
- Memoization of shortest paths in SigGraph, the graph with func signature as vertex and distance as edge weight.
- Other
- Google Analytics.
- Google Analytics options, for self-hosted user.
See draft.md.
Not specified. You may suggest one!