您好,登錄后才能下訂單哦!
Golang有個(gè)很酷的特性可以跨平臺(tái)編譯生成該平臺(tái)的二進(jìn)制可執(zhí)行文件,雖然python也能通過(guò)其他工具生成相應(yīng)平臺(tái)的二進(jìn)制文件,但是還是覺(jué)得太別扭了,通過(guò)golang寫(xiě)一次,然后生成相應(yīng)平臺(tái)的二進(jìn)制文件而且沒(méi)有依賴,多酷的事情。
這個(gè)ss帳號(hào)獲取腳本干啥滴?
參考:http://youerning.blog.51cto.com/10513771/1852876
還在不斷學(xué)習(xí)中,可能代碼寫(xiě)得不夠gopher。
首先安裝依賴:
go get github.com/PuerkitoBio/goquery
go get github.com/skip2/go-qrcode
源碼:
package main import ( "encoding/base64" "fmt" "github.com/PuerkitoBio/goquery" "github.com/skip2/go-qrcode" "strings" ) func strInSlice(a string, list []string) bool { for _, b := range list { if b == a { return true } } return false } func main() { ssURL := "http://www.ishadowsocks.org/" page, err := goquery.NewDocument(ssURL) if err != nil { fmt.Println(err) return } page.Find(".col-lg-4,.text-center").Each(func(i int, s *goquery.Selection) { lis := make([]string, 4) s.Find("h5").Each(func(i int, ss *goquery.Selection) { txt := ss.Text() if i < 4 && strings.Contains(txt, ":") { cont := strings.Split(txt, ":")[1] lis[i] = cont } }) if strInSlice("aes-256-cfb", lis) { fmt.Println(lis) data1 := lis[3] + ":" + lis[2] + "@" + lis[0] + ":" + lis[1] data2 := []byte(data1) enc := base64.StdEncoding.EncodeToString(data2) ret := "ss://" + enc fname := lis[0] + ".png" qrcode.WriteFile(ret, qrcode.Medium, 256, fname) } }) }
保存文件為:ss.go
在本機(jī)執(zhí)行:
go run ss.go
執(zhí)行完成后,會(huì)在當(dāng)前目錄下生成三個(gè)png文件,怎么使用參考最上面的鏈接吧
生成當(dāng)前環(huán)境的二進(jìn)制文件:
go build ss.go
然后就會(huì)在當(dāng)前文件夾生成同名的二進(jìn)制文件了
生成相應(yīng)環(huán)境的二進(jìn)制文件,比如windows下是.exe文件:
linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
moc os
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
后記:python開(kāi)發(fā)還是很快的,但是golang也不差,再者golang的其它特性如goroutine,interface之類咱就不聊了,聊聊一個(gè)寫(xiě)小工具的心得。
二進(jìn)制可執(zhí)行文件真的那么重要么?
如果你寫(xiě)了一些小工具,又借助了很多的依賴包,當(dāng)你放到其它平臺(tái)必定是pip install -r requirement 這還是可以忍受的,如果這些小工具需要放置到一些不能聯(lián)網(wǎng)環(huán)境,那么就很難過(guò)了~ 有一個(gè)工具是pyinstaller還是不錯(cuò)滴,可還是不夠優(yōu)雅。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。