nikolaydubina / go-recipes Goto Github PK
View Code? Open in Web Editor NEW🦩 Tools for Go projects
License: MIT License
🦩 Tools for Go projects
License: MIT License
They take too much space and to catchy to eyes.
package main
import (
"go/ast"
"go/parser"
"go/token"
)
func main() {
fs := token.NewFileSet()
tr, _ := parser.ParseExpr("(3-1) * 5")
ast.Print(fs, tr)
}
$ gopls --help
The Go Language source tools.
Usage: gopls [flags] <command> [command-flags] [command-args]
gopls is a Go language server. It is typically used with an editor to provide
language features. When no command is specified, gopls will default to the 'serve'
command. The language features can also be accessed via the gopls command-line interface.
Available commands are:
main:
serve : run a server for Go code using the Language Server Protocol
version : print the gopls version information
bug : report a bug in gopls
api-json : print json describing gopls API
licenses : print licenses of included software
features:
call_hierarchy : display selected identifier's call hierarchy
check : show diagnostic results for the specified file
definition : show declaration of selected identifier
folding_ranges : display selected file's folding ranges
format : format the code according to the go standard
highlight : display selected identifier's highlights
implementation : display selected identifier's implementation
imports : updates import statements
remote : interact with the gopls daemon
inspect : interact with the gopls daemon (deprecated: use 'remote')
links : list links in a file
prepare_rename : test validity of a rename operation at location
references : display selected identifier's references
rename : rename selected identifier
semtok : show semantic tokens for the specified file
signature : display selected identifier's signature
fix : apply suggested fixes
symbols : display selected file's symbols
workspace : manage the gopls workspace (experimental: under development)
workspace_symbol : search symbols in workspace
gopls flags are:
-debug string
serve debug information on the supplied address
-listen string
address on which to listen for remote connections. If prefixed by 'unix;', the subsequent address is assumed to be a unix domain socket. Otherwise, TCP is used.
-listen.timeout duration
when used with -listen, shut down the server when there are no connected clients for this duration
-logfile string
filename to log to. if value is "auto", then logging to a default output file is enabled
-mode string
no effect
-ocagent string
the address of the ocagent (e.g. http://localhost:55678), or off (default "off")
-port int
port on which to run gopls for debugging purposes
-profile.cpu string
write CPU profile to this file
-profile.mem string
write memory profile to this file
-profile.trace string
write trace log to this file
-remote string
forward all commands to a remote lsp specified by this flag. With no special prefix, this is assumed to be a TCP address. If prefixed by 'unix;', the subsequent address is assumed to be a unix domain socket. If 'auto', or prefixed by 'auto;', the remote address is automatically resolved based on the executing environment.
-remote.debug string
when used with -remote=auto, the -debug value used to start the daemon
-remote.listen.timeout duration
when used with -remote=auto, the -listen.timeout value used to start the daemon (default 1m0s)
-remote.logfile string
when used with -remote=auto, the -logfile value used to start the daemon
-rpc.trace
print the full rpc trace in lsp inspector format
-v verbose output
-vv
very verbose output
List all direct depdendencies with updates:
go list -u -m $(go list -m -f '{{.Indirect}} {{.}}' all | grep '^false' | cut -d ' ' -f2) | grep '\
Here is a one line we use in our github actions pipeline to setup the correct go version automatically from go.mod
:
go mod edit -json | jq -r .Go
as github offers copy icon by default it will be better to split command and output
It can be rewritten like this:
Use this when upgrading version of Go or finding old modules.
Run:
$ go list -deps -json ./... | jq -rc 'select(.Standard!=true and .Module.GoVersion!=null) | [.Module.GoVersion,.Module.Path] | join(" ")' | sort -V | uniq
Example output:
1.11 github.com/ugorji/go/codec
1.11 golang.org/x/crypto
1.12 github.com/golang/protobuf
...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.