The current gos is still an alpha version, welcome more people to comment and improve it 🍓, you can add more commands to it, or modify something to make it perform better.
You can download the compiled binary program here: Release Page
From now on, use gos instead of go:
go get => gos get
go build => gos build
go run => gos run
go ... => gos ...
gos is compatible with all go commands and has go mod/get equipped with smart GOPROXY
, it automatically distinguishes between private and public repositories and uses GOPROXY
to download your lost package when appropriate.
gos has a few extra commands to enhance your development experience:
cross agile and fast cross compiling
proto quick and easy compilation of proto files
You can use -h
on these sub commands to get more information.
This can't be simpler.
According to your system type, download the zip file from the release page, unzip, rename the binaries to gos
and put it in your $PATH
. Then use gos
as if you were using the go
command.
You can also download the source code and compile it using go build -o gos main.go
Note: The prerequisite for gos to work properly is that the go binary is in your $PATH
. If you need to use the gos proto
command, you need the protoc binary too.
1. Fully Compatible With Go Native Commands
You can use gos
just like you would with the go
command. Compatible with all flags and arguments, such as the following:
go get -u -v github.com/xxxx/xxxx
=>
gos get -u -v github.com/xxxx/xxxx
You can use gos cross
command for simpler cross-compilation:
gos cross main.go linux
gos cross main.go linux amd64
gos cross main.go linux arm
gos cross main.go linux 386
gos cross main.go windows amd64
gos cross main.go darwin 386
gos cross main.go linux all
gos cross main.go windows all
gos cross main.go all amd64
gos cross all all
Gos uses parallel compilation, very fast 🚀, but still depends on the configuration of your operating system.
More information: gos cross -h
This feature may only be useful to RPC developers. You can compile proto files more easily, as follows:
gos proto helloworld.proto
gos proto all
gos proto all/all
Of course, the precondition is that you have a protoc binary in your $PATH
.
More information: gos proto -h
There is a dilemma here. If you don't use GOPROXY
, there may be a large number of Package pull timeouts (network reasons) or non-existence (repository rename, delete or migrate), like the following:
unrecognized import path "golang.org/x/net" (https fetch: Get https://golang.org/x/net?go-get=1:
dial tcp 216.239.37.1:443: connectex:
A connection attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because connected host
has failed to respond.)
If use GOPROXY
, you will not be able to pull the private repositories (github, gitlab, etc.) properly, like that:
go get github.com/your_private_repo: unexpected status
(https:
GOS strengthens all of GO's native commands, no matter it's go mod/get/build/run/... Any situation that might cause a package pull, gos will intelligently determine whether the current repository to be pulled needs to use GOPROXY
.
Now, live your thug life. 😎