Gos: GO MODULE解决方案 💪

作者: 即将秃头的Java程序员 | 来源:发表于2020-02-26 16:21 被阅读0次


Project Address:github.com/storyicon/g…

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

Brief introduction

How to start

What GOS can do:

-1. Fully compatible with Go native commands

-2. Simpler Cross-Compilation

-3. Rapid generation of .proto

-4. Go proxy solution

🦄 Brief introduction

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 smartGOPROXY,it automatically distinguishes between private and public repositoriesand usesGOPROXYto 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.

🐋 How to start

This can't be simpler.

According to your system type, download the zip file from therelease page, unzip, rename the binaries togosand put it in your$PATH. Then usegosas if you were using thegocommand.

You can also download the source code and compile it usinggo build -o gos main.go

Note: The prerequisite for gos to work properly is that thego binaryis in your $PATH. If you need to use thegos protocommand, you need theprotoc binarytoo.

:tangerine: What GOS can do:

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

2. Simpler Cross-Compilation

You can use gos cross command for simpler cross-compilation:

# Compile Linux platform binaries for the current system architecture

# For example, if your computer are amd64, it will compile main.go into the binary of linux/amd64 architecture.

gos cross main.go linux

# Specify the build platform and architecture

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

# Compiling binary files for all architectures on the specified platform

gos cross main.go linux all

gos cross main.go windows all

# Compiling binary files for all platforms on the specified architecture

gos cross main.go all amd64

# Trying to compile binary files for all platforms and architectures

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

3. Rapid generation of .proto

This feature may only be useful to RPC developers. You can compile proto files more easily, as follows:

# Compile a single file

gos proto helloworld.proto

# Compile all proto files under the current folder (excluding subfolders)

gos proto all

# Compile all proto files in the current directory and all subdirectories

gos proto all/all

Of course, the precondition is that you have aprotoc binaryin your $PATH.

more information:gos proto -h

4. Go proxy solution

There is a dilemma here. If you don't useGOPROXY, there may be a large number of Package pull timeouts (network reasons) or non-existence (repository rename, delete or migrate), like the following:

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://athens.azurefd.net/github.com/your_private_repo/@v/list): 500 Internal Server Error

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 useGOPROXY.

Now, live your thug life 😎

以上内容都是我自己的一些感想,分享出来欢迎大家指正,顺便求一波关注

作者:故事细腻icon

链接:https://juejin.im/post/5ce3f6ede51d455cd73b9fef

来源:掘金

相关文章

网友评论

    本文标题:Gos: GO MODULE解决方案 💪

    本文链接:https://www.haomeiwen.com/subject/ltjbchtx.html