在Go語言中,規(guī)定的方式是,函數(shù)返回錯誤信息。這沒什么。如果一個文件并不存在,op.Open函數(shù)會返回一個錯誤信息。這沒什么。如果你向你一個中斷了的網(wǎng)絡(luò)連接里寫數(shù)據(jù),net.Conn里的Write方法會返回一個錯誤。這沒什么。這種狀況在這種程序中是可以預(yù)料到的。這種操作就是容易失敗,你知道程序會如何運行,因為API的設(shè)計者通過內(nèi)置了一種錯誤情況的結(jié)果而讓這一切顯得很清楚。
創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、成都app軟件開發(fā)公司、移動網(wǎng)站建設(shè)、微信網(wǎng)站制作、軟件開發(fā)、川西大數(shù)據(jù)中心等實行標準化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。
從另一方面講,有些操作基本上不會出錯,所處的環(huán)境根本不可能給你提示錯誤信息,不可能控制錯誤。這才是讓人痛苦的地方。典型的例子;一個程序執(zhí)行
x[j],j值超出數(shù)組邊界,這才痛苦。像這樣預(yù)料之外的麻煩在程序中是一個嚴重的bug,一般會弄死程序的運行。不幸的是,由于這種情況的存在,我們很難寫出健壯的,具有自我防御的服務(wù)器——例如,可以應(yīng)付偶然出現(xiàn)的有bug的HTTP請求處理器時,不影響其他服務(wù)的啟動和運行。為解決這個問題,我們引入了恢復(fù)機制,它能讓一個go例程從錯誤中恢復(fù),服務(wù)余下設(shè)定的調(diào)用。然而,代價是,至少會丟失一個調(diào)用。這是特意而為之的。引用郵件中的原話:“這種設(shè)計不同于常見的異??刂平Y(jié)構(gòu),這是一個認真思考后的決定。我們不希望像java語言里那樣把錯誤和異?;鞛橐徽劇!?/p>
我剛開始提到的那篇文章里問“為什么數(shù)組越界造成的麻煩會比錯誤的網(wǎng)址或斷掉的網(wǎng)絡(luò)引出的問題要大?”答案是,我們沒有一種內(nèi)聯(lián)并行的方法來報告在執(zhí)行x[j]期間產(chǎn)生的錯誤,但我們有內(nèi)聯(lián)并行的方法報告由錯誤網(wǎng)址或網(wǎng)絡(luò)問題造成的錯誤。
使用Go語言中的錯誤返回模式的規(guī)則很簡單:如果你的函數(shù)在某種情況下很容易出錯,那它就應(yīng)該返回錯誤。當我調(diào)用其它的程序庫時,如果它是這樣寫的,那我不必擔心那些錯誤的產(chǎn)生,除非有真正異常的狀況,我根本沒有想到需要處理它們。
有一個你需要記在心里的事情是,Go語言是為大型軟件設(shè)計的。我們都喜歡程序簡潔清晰,但對于一個由很多程序員一起開發(fā)的大型軟件,維護成本的增加很難讓程序簡潔。異常捕捉模式的錯誤處理方式的一個很有吸引力的特點是,它非常適合小程序。但對于大型程序庫,如果對于一些普通操作,你都需要考慮每行代碼是否會拋出異常、是否有必要捕捉處理,這對于開發(fā)效率和程序員的時間來說都是非常嚴重的拖累。我自己做開發(fā)大型Python軟件時感受到了這個問題。
Go語言的返回錯誤方式,不可否認,對于調(diào)用者不是很方便,但這樣做會讓程序中可能會出錯的地方顯的很明顯。對于小程序來說,你可能只想打印出錯誤,退出程序。對于一些很精密的程序,根據(jù)異常的不同,來源的不同,程序會做出不同的反應(yīng),這很常見,這種情況中,try
+
catch的方式相對于錯誤返回模式顯得冗長。當然,Python里的一個10行的代碼放到Go語言里很可能會更冗長。畢竟,Go語言主要不是針對10行規(guī)模的程序的。
就是要說明這一點:Go語言程序員認為,把error作為一種內(nèi)置的類型是非常重要的。
Go 語言是一個試圖結(jié)合動態(tài)類型和靜態(tài)類型,編譯效率和安全性以及語言的易用性等眾多特性與一體的一種嘗試。他的另一個目標是支持現(xiàn)代的基于網(wǎng)絡(luò)的、基于多核的計算。最后,Go 還是非??斓?,他可以在單個計算機上僅僅花費幾秒時間構(gòu)建一個龐大的應(yīng)用程序。使用GO語言開發(fā)android語言步驟如下:
1. 下載安裝Go語言(版本1.5+)
Golang鏈接
回到頂部
2. 下載安裝 gomobile
下載
$ go get golang.org/x/mobile/cmd/gomobile
安裝(需要等待幾分鐘)
gomobile init
回到頂部
3. Golang開發(fā)手機應(yīng)用有兩種方式
a. 原生應(yīng)用開發(fā)
$ go get -d golang.org/x/mobile/example/basic
主要應(yīng)用領(lǐng)域:
應(yīng)用控制管理與配置
OpenGL ES 2 綁定
Asset 管理
Event 管理
試驗中的包,含有OpenAL 綁定、音頻、字體、圖形以及運動傳感器
Android開發(fā)
$ gomobile build -target=android golang.org/x/mobile/example/basic
此命令會生成名為basic的apk安裝包
$ gomobile install golang.org/x/mobile/example/basic
此命令將安裝apk包到已連接的android設(shè)備
微信小程序開發(fā)一般有php語言和java語言兩種語言、html/css/js三件套都要會。
微信小程序常見使用“MINA”框架,這個框架為微信小程序的運行提供了豐富的組件和API。微信小程序開發(fā)者要學會和掌握小程序的框架結(jié)構(gòu)、數(shù)據(jù)綁定機制、模板、數(shù)據(jù)緩存、常用組件和API等相關(guān)知識。
Go語言由Google公司開發(fā),并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發(fā)編程,性能堪比C語言,開發(fā)效率肩比Python,被譽為“21世紀的C語言”。
Go語言在云計算、大數(shù)據(jù)、微服務(wù)、高并發(fā)領(lǐng)域應(yīng)用應(yīng)用非常廣泛。BAT大廠正在把Go作為新項目開發(fā)的首選語言。
Go語言能干什么?
1、服務(wù)端開發(fā):以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統(tǒng)、監(jiān)控系統(tǒng)等;
2、DevOps:運維生態(tài)中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發(fā);
3、網(wǎng)絡(luò)編程:大量優(yōu)秀的Web框架如Echo、Gin、Iris、beego等,而且Go內(nèi)置的 net/http包十分的優(yōu)秀;
4、Paas云平臺領(lǐng)域:Kubernetes和Docker Swarm等;
5、分布式存儲領(lǐng)域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區(qū)塊鏈領(lǐng)域:區(qū)塊鏈里面有兩個明星項目以太坊和fabric都使用Go語言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實現(xiàn)的;
8、爬蟲及大數(shù)據(jù):Go語言天生支持并發(fā),所以十分適合編寫分布式爬蟲及大數(shù)據(jù)處理。
分享題目:go語言小程序,gogorushb小程序
網(wǎng)站URL:http://aaarwkj.com/article42/dsisjec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站維護、定制網(wǎng)站、網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)