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
func
nor 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!