
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.

Usage:
  gopls help [<subject>]

Command:

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
  help              print usage information for subcommands
  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
  vulncheck         run experimental vulncheck analysis (experimental: under development)

flags:
  -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
    	verbose output
  -vv,-veryverbose
    	very verbose output
