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