golang在近些年被追捧,不管某華,某阿在很多服務(wù)器開(kāi)發(fā)上都在使用。
創(chuàng)新互聯(lián)是專業(yè)的扎賚特網(wǎng)站建設(shè)公司,扎賚特接單;提供成都做網(wǎng)站、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行扎賚特網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
你不用懷疑golang的
優(yōu)勢(shì):部署簡(jiǎn)單,良好的語(yǔ)言設(shè)計(jì),并發(fā)性好,性能優(yōu)良,開(kāi)發(fā)簡(jiǎn)潔快,標(biāo)準(zhǔn)庫(kù)強(qiáng)大,編譯簡(jiǎn)單
缺點(diǎn):還存在一些缺陷(例如垃圾回收),缺少安全檢查,性能方面目前比不過(guò)java,第三方庫(kù)不及java
但作為新興語(yǔ)種,我們不用擔(dān)心,背后有谷歌支持和java持平也就是時(shí)間上的問(wèn)題。
而且前面還有某華,某阿頂著不怕。
Go語(yǔ)言是谷歌推出的一種全新的編程語(yǔ)言,可以在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說(shuō):我們之所以開(kāi)發(fā)Go,是因?yàn)檫^(guò)去10多年間軟件開(kāi)發(fā)的難度令人沮喪。
Go是谷歌2009發(fā)布的第二款編程語(yǔ)言。2009年7月份,谷歌曾發(fā)布了Simple語(yǔ)言,它是用來(lái)開(kāi)發(fā)Android應(yīng)用的一種BASIC語(yǔ)言.
北京時(shí)間2010年1月10日,Go語(yǔ)言摘得了TIOBE公布的2009年年度大獎(jiǎng)。該獎(jiǎng)項(xiàng)授予在2009年市場(chǎng)份額增長(zhǎng)最多的編程語(yǔ)言。
谷歌資深軟件工程師羅布·派克(Rob Pike)表示,"Go讓我體驗(yàn)到了從未有過(guò)的開(kāi)發(fā)效率。"派克表示,今天的C++或C一樣,Go是一種系統(tǒng)語(yǔ)言。他解釋道,"使用它可以進(jìn)行快速開(kāi)發(fā),同時(shí)它還是一個(gè)真正的編譯語(yǔ)言,我們之所以現(xiàn)在將其開(kāi)源,原因是我們認(rèn)為它已經(jīng)非常有用和強(qiáng)大。"
2007年,谷歌把Go作為一個(gè)20%項(xiàng)目開(kāi)始研發(fā),即讓員工抽出本職工作之外時(shí)間的20%, 投入在該項(xiàng)目上。除了派克外,該項(xiàng)目的成員還有其他谷歌工程師也參與研發(fā)。
派克表示,編譯后Go代碼的運(yùn)行速度與C語(yǔ)言非常接近,而且編譯速度非常快,就像在使用一個(gè)交互式語(yǔ)言?,F(xiàn)有編程語(yǔ)言均未專門對(duì)多核處理器進(jìn)行優(yōu)化。Go就是谷歌工程師為這類程序編寫的一種語(yǔ)言。它不是針對(duì)編程初學(xué)者設(shè)計(jì)的,但學(xué)習(xí)使用它也不是非常困難。Go支持面向?qū)ο螅揖哂姓嬲拈]包(closures)和反射 (reflection)等功能。
在學(xué)習(xí)曲線方面,派克認(rèn)為Go與Java類似,對(duì)于Java開(kāi)發(fā)者來(lái)說(shuō),應(yīng)該能夠輕松學(xué)會(huì) Go。之所以將Go作為一個(gè)開(kāi)源項(xiàng)目發(fā)布,目的是讓開(kāi)源社區(qū)有機(jī)會(huì)創(chuàng)建更好的工具來(lái)使用該語(yǔ)言,例如 Eclipse IDE中的插件。
在谷歌公開(kāi)發(fā)布的所有網(wǎng)絡(luò)應(yīng)用中,均沒(méi)有使用Go,但是谷歌已經(jīng)使用該語(yǔ)言開(kāi)發(fā)了幾個(gè)內(nèi)部項(xiàng)目。派克表示,Go是否會(huì)對(duì)谷歌即將推出的Chrome OS產(chǎn)生影響,還言之尚早,不過(guò)Go的確可以和Native Client配合使用。他表示"Go可以讓應(yīng)用完美的運(yùn)行在瀏覽器內(nèi)。"例如,使用Go可以更高效的實(shí)現(xiàn)Wave,無(wú)論是在前端還是后臺(tái)。
Go 同時(shí)具有兩種編譯器,一種是建立在GCC基礎(chǔ)上的Gccgo,另外一種是分別針對(duì)64位x64和32位x86計(jì)算機(jī)的一套編譯器(6g和8g)。谷歌目前正在研發(fā)其對(duì)ARM芯片和Android設(shè)備的支持。派克表示,"Android手機(jī)存在的問(wèn)題是,我們一直沒(méi)有一個(gè)數(shù)學(xué)協(xié)處理器。"
配置環(huán)境
在OSX系統(tǒng)上很容易安裝GO的可執(zhí)行文件:
brew?install?go
雖然Java或Ruby?(或者任何我知道的語(yǔ)言)?可以在本地文件系統(tǒng)的任何地方使用命令,,但是Go項(xiàng)目必須使用單一專用的地址,,并且在$GOPATH環(huán)境變量下可用。
第?1?段(可獲?1.54?積分)
R?e;?7個(gè)月前?
創(chuàng)建項(xiàng)目對(duì)于Logstash插件,Beats項(xiàng)目可以從模板創(chuàng)建。官方文檔的說(shuō)明十分簡(jiǎn)單。鑒于Go對(duì)文件系統(tǒng)上的位置的嚴(yán)格要求,只需按照以下說(shuō)明生成一個(gè)新的即可使用的Go項(xiàng)目。默認(rèn)模板代碼將在控制臺(tái)中重復(fù)發(fā)送帶增量計(jì)數(shù)器的事件:./redditbeat?-e?-d?"*"
2016/12/13?22:55:56.013362?beat.go:267:?INFO
Home?path:?[/Users/i303869/projects/private/go/src/github.com/nfrankel/redditbeat]
Config?path:?[/Users/i303869/projects/private/go/src/github.com/nfrankel/redditbeat]
Data?path:?[/Users/i303869/projects/private/go/src/github.com/nfrankel/redditbeat/data]
Logs?path:?[/Users/i303869/projects/private/go/src/github.com/nfrankel/redditbeat/logs]
2016/12/13?22:55:56.013390?beat.go:177:?INFO?Setup?Beat:?redditbeat;?Version:?6.0.0-alpha1
2016/12/13?22:55:56.013402?processor.go:43:?DBG??Processors:?
2016/12/13?22:55:56.013413?beat.go:183:?DBG??Initializing?output?plugins
2016/12/13?22:55:56.013417?logp.go:219:?INFO?Metrics?logging?every?30s
2016/12/13?22:55:56.013518?output.go:167:?INFO?Loading?template?enabled.?Reading?template?file:
/Users/i303869/projects/private/go/src/github.com/nfrankel/redditbeat/redditbeat.template.json
2016/12/13?22:55:56.013888?output.go:178:?INFO?Loading?template?enabled?for?Elasticsearch?2.x.?Reading?template?file:
/Users/i303869/projects/private/go/src/github.com/nfrankel/redditbeat/redditbeat.template-es2x.json
2016/12/13?22:55:56.014229?client.go:120:?INFO?Elasticsearch?url:?
2016/12/13?22:55:56.014272?outputs.go:106:?INFO?Activated?elasticsearch?as?output?plugin.
2016/12/13?22:55:56.014279?publish.go:234:?DBG??Create?output?worker
2016/12/13?22:55:56.014312?publish.go:276:?DBG??No?output?is?defined?to?store?the?topology.
The?server?fields?might?not?be?filled.
2016/12/13?22:55:56.014326?publish.go:291:?INFO?Publisher?name:?LSNM33795267A
2016/12/13?22:55:56.014386?async.go:63:?INFO?Flush?Interval?set?to:?1s
2016/12/13?22:55:56.014391?async.go:64:?INFO?Max?Bulk?Size?set?to:?50
2016/12/13?22:55:56.014395?async.go:72:?DBG??create?bulk?processing?worker?(interval=1s,?bulk?size=50)
2016/12/13?22:55:56.014449?beat.go:207:?INFO?redditbeat?start?running.
2016/12/13?22:55:56.014459?redditbeat.go:38:?INFO?redditbeat?is?running!?Hit?CTRL-C?to?stop?it.
2016/12/13?22:55:57.370781?client.go:184:?DBG??Publish:?{
"@timestamp":?"2016-12-13T22:54:47.252Z",
"beat":?{
"hostname":?"LSNM33795267A",
"name":?"LSNM33795267A",
"version":?"6.0.0-alpha1"
},
"counter":?1,
"type":?"redditbeat"
}
第?2?段(可獲?0.73?積分)
R?e;?7個(gè)月前?
關(guān)于命令行參數(shù):-e記錄到標(biāo)準(zhǔn)err,而-d“*”啟用所有調(diào)試選擇器。有關(guān)參數(shù)的完整列表,請(qǐng)鍵入./redditbeat?--help。編碼Go代碼位于.go文件中(令人驚訝...)在$?GOPATH?/?src文件夾的項(xiàng)目子文件夾中。配置類型第一個(gè)有趣的文件是config?/?config.go,它定義了一個(gè)結(jié)構(gòu)來(lái)聲明Beat的可能參數(shù)。至于前面的Logstash插件,讓我們添加一個(gè)subreddit參數(shù),并設(shè)置它的默認(rèn)值:type?Config?struct?{
Period?time.Duration?`config:"period"`
Subreddit?string?`config:"subreddit"`
}
var?DefaultConfig?=?Config?{
Period:?15?*?time.Second,
Subreddit:?"elastic",
}
第?3?段(可獲?0.89?積分)
R?e;?7個(gè)月前?
Beater?TypeBeat本身的代碼在beater?/?redditbean.go中找到。默認(rèn)模板為Beat和三個(gè)函數(shù)創(chuàng)建一個(gè)struct:Beat構(gòu)造函數(shù)—用來(lái)讀取配置:?func?New(b?*beat.Beat,?cfg?*common.Config)?(beat.Beater,?error)?{?...?}?
Run?函數(shù)-?需要覆蓋Beat的主要功能:?func?(bt?*Redditbeat)?Run(b?*beat.Beat)?error?{?...?}?
Stop?函數(shù)管理優(yōu)雅關(guān)閉:?func?(bt?*Redditbeat)?Stop()?{?...?}?
Note?1:在Go中沒(méi)有明確的接口實(shí)現(xiàn)。實(shí)現(xiàn)了?interface?中的所有方法,即創(chuàng)建一個(gè)隱式繼承關(guān)系.?出于寫文檔的目的,這是?Beater?接口:type?Beater?interface?{
Run(b?*Beat)?error
Stop()
}
第?4?段(可獲?0.93?積分)
R?e;?7個(gè)月前?
因此,由于Beat結(jié)構(gòu)實(shí)現(xiàn)了Run和Stop,它是一個(gè)Beater。Note?2:?在Go中沒(méi)有類的概念,所以方法不能在一個(gè)具體類型上聲明。但是,它存在擴(kuò)展函數(shù)的概念:可以添加行為到一個(gè)類型(在單個(gè)包中)的函數(shù)。它需要聲明receiver?類型:這是在fun關(guān)鍵字和函數(shù)名之間完成的?-?這里是指Redditbeat類型(或者更準(zhǔn)確地說(shuō),是一個(gè)指向Redditbeat類型的指針,但是這里有一個(gè)隱式轉(zhuǎn)換)。構(gòu)造函數(shù)和Stop函數(shù)可以保持不變,無(wú)論什么特性都應(yīng)該在Run函數(shù)中。在這種情況下,功能是調(diào)用Reddit?REST?API并為每個(gè)Reddit帖子發(fā)送一條消息。
第?5?段(可獲?1.59?積分)
R?e;?7個(gè)月前?
最終代碼如下所示:func?(bt?*Redditbeat)?Run(b?*beat.Beat)?error?{
bt.client?=?b.Publisher.Connect()
ticker?:=?time.NewTicker(bt.config.Period)
reddit?:=?""?+?bt.config.Subreddit?+?"/.json"
client?:=?http.Client?{}
for?{
select?{
case?-bt.done:
return?nil
case?-ticker.C:
}
req,?reqErr?:=?http.NewRequest("GET",?reddit,?nil)
req.Header.Add("User-Agent",?"Some?existing?header?to?bypass?429?HTTP")
if?(reqErr?!=?nil)?{
panic(reqErr)
}
resp,?getErr?:=?client.Do(req)
if?(getErr?!=?nil)?{
panic(getErr)
}
body,?readErr?:=?ioutil.ReadAll(resp.Body)
defer?resp.Body.Close()
if?(readErr?!=?nil)?{
panic(readErr)
}
trimmedBody?:=?body[len(prefix):len(body)?-?len(suffix)]
messages?:=?strings.Split(string(trimmedBody),?separator)
for?i?:=?0;?i??len(messages);?i?++?{
event?:=?common.MapStr{
"@timestamp":?common.Time(time.Now()),
"type":???????b.Name,
"message":????"{"?+?messages[i]?+?"}",
}
bt.client.PublishEvent(event)
}
}
}
第?6?段(可獲?0.09?積分)
R?e;?7個(gè)月前?
這里是對(duì)最重要的幾部分的解釋:line?4:?通過(guò)連接字符串創(chuàng)建Reddit?REST?URL,包括配置Subreddit參數(shù)。記住,它的默認(rèn)值已在config.go文件中定義。line?5:?引用httpClient類型line?12:?創(chuàng)建新的HTTP請(qǐng)求。注意Go允許多個(gè)返回值。line?13:?如果沒(méi)有設(shè)置標(biāo)準(zhǔn)請(qǐng)求頭,Reddit的API將返回429狀態(tài)碼。line?14:?Go標(biāo)準(zhǔn)錯(cuò)誤不通過(guò)異常處理,而是隨著常規(guī)返回值返回。根據(jù)Golang?wiki:指示調(diào)用者的錯(cuò)誤條件,應(yīng)通過(guò)返回錯(cuò)誤值來(lái)完成line?15:?panic()?函數(shù)類似于在Java中拋出異常,?被處理時(shí)推到棧頂。?有關(guān)詳細(xì)信息,請(qǐng)查看相關(guān)文檔。line?17:?執(zhí)行HTTP請(qǐng)求。line?21:?將響應(yīng)主體讀入字節(jié)數(shù)組。line?22:?關(guān)閉主體流。注意defer關(guān)鍵字:defer語(yǔ)句延遲函數(shù)的執(zhí)行,直到環(huán)繞的函數(shù)返回。line?26:?創(chuàng)建整個(gè)響應(yīng)主體字節(jié)數(shù)組的切片?-?對(duì)數(shù)組的一部分的引用。實(shí)質(zhì)上,它刪除了前綴和后綴以保持相關(guān)的JSON值。之后將字節(jié)數(shù)組解析成JSON。line?27:?分割切片以單獨(dú)獲取每個(gè)JSON片段。line?29:?將消息創(chuàng)建為簡(jiǎn)單的字典結(jié)構(gòu)。line?34:?發(fā)送。
第?7?段(可獲?3.11?積分)
R?e;?7個(gè)月前?
配置,?構(gòu)建,?運(yùn)行默認(rèn)配置參數(shù)可以在項(xiàng)目根目錄下的redditbeat.yml文件中找到。請(qǐng)注意,redditbeat.full.yml中列出了其他常見(jiàn)的Beat參數(shù),以及相關(guān)注釋。關(guān)于Beats的一個(gè)有趣的事情是,他們的消息可以直接發(fā)送到Elasticsearch或Logstash進(jìn)行進(jìn)一步處理。這在上述配置文件中配置。redditbeat:
period:?10s
output.elasticsearch:
hosts:?["localhost:9200"]
output.logstash:
hosts:?["localhost:5044"]
enabled:?true
第?8?段(可獲?0.78?積分)
R?e;?7個(gè)月前?
此配置片段將每10秒循環(huán)運(yùn)行Run方法,并將消息發(fā)送到在localhost上運(yùn)行的Logstash實(shí)例在端口5044上。這可以在運(yùn)行Beat時(shí)被覆蓋(見(jiàn)下文)。注意:為了使Logstash接受來(lái)自Beats的消息,必須安裝Logstash?Beat插件,并且必須為Beats配置Logstash的input:input?{
beats?{
port?=?5044
}
}
要構(gòu)建項(xiàng)目,請(qǐng)?jiān)陧?xiàng)目的根目錄中鍵入make。它將創(chuàng)建一個(gè)可以運(yùn)行的可執(zhí)行文件。./redditbeat?-e?-E?redditbeat.subreddit=java
-E參數(shù)可以覆蓋在的redditbeat.yml配置文件中找到的參數(shù)(見(jiàn)上文)。在這里,它設(shè)置subreddit讀為“java”,而不是默認(rèn)的“elastic”。
第?9?段(可獲?1.3?積分)
R?e;?7個(gè)月前?
輸出如下所示:2016/12/17?14:51:19.748329?client.go:184:?DBG??Publish:?{
"@timestamp":?"2016-12-17T14:51:19.748Z",
"beat":?{
"hostname":?"LSNM33795267A",
"name":?"LSNM33795267A",
"version":?"6.0.0-alpha1"
},
"message":?"{
\"kind\":?\"t3\",?\"data\":?{
\"contest_mode\":?false,?\"banned_by\":?null,?
\"domain\":?\"blogs.oracle.com\",?\"subreddit\":?\"java\",?\"selftext_html\":?null,?
\"selftext\":?\"\",?\"likes\":?null,?\"suggested_sort\":?null,?\"user_reports\":?[],?
\"secure_media\":?null,?\"saved\":?false,?\"id\":?\"5ipzgq\",?\"gilded\":?0,?
\"secure_media_embed\":?{},?\"clicked\":?false,?\"report_reasons\":?null,?
\"author\":?\"pushthestack\",?\"media\":?null,?\"name\":?\"t3_5ipzgq\",?\"score\":?11,?
\"approved_by\":?null,?\"over_18\":?false,?\"removal_reason\":?null,?\"hidden\":?false,?
\"thumbnail\":?\"\",?\"subreddit_id\":?\"t5_2qhd7\",?\"edited\":?false,?
\"link_flair_css_class\":?null,?\"author_flair_css_class\":?null,?\"downs\":?0,?
\"mod_reports\":?[],?\"archived\":?false,?\"media_embed\":?{},?\"is_self\":?false,?
\"hide_score\":?false,?\"spoiler\":?false,?
\"permalink\":?\"/r/java/comments/5ipzgq/jdk_9_will_no_longer_bundle_javadb/\",?
\"locked\":?false,?\"stickied\":?false,?\"created\":?1481943248.0,?
\"url\":?\"\",?
\"author_flair_text\":?null,?\"quarantine\":?false,?
\"title\":?\"JDK?9?will?no?longer?bundle?JavaDB\",?\"created_utc\":?1481914448.0,?
\"link_flair_text\":?null,?\"distinguished\":?null,?\"num_comments\":?4,?
\"visited\":?false,?\"num_reports\":?null,?\"ups\":?11
}
}",
"type":?"redditbeat"
}
Go語(yǔ)言將支持Android
概述
我們建議將Go語(yǔ)言引入Android平臺(tái),重點(diǎn)是用Go語(yǔ)言編寫游戲程序,API將在Android NDK中定義。
背景
Android平臺(tái)被設(shè)定為一個(gè)多應(yīng)用操作系統(tǒng),一個(gè)相對(duì)于傳統(tǒng)UNIX系統(tǒng)來(lái)說(shuō)更依賴于網(wǎng)絡(luò)庫(kù)和服務(wù)的操作系統(tǒng),這意味著我們將為Go運(yùn)行時(shí)開(kāi)放更多的API。
將Golang帶入Android平臺(tái)是一件非常糟糕的事情,因?yàn)锳ndroid本身是Java構(gòu)建的并且擁有巨量的API,任何試圖將這些API用Go替代的結(jié)果將會(huì)導(dǎo)致一個(gè)非常糟糕的結(jié)果。無(wú)論是手工建立包裝類還是自動(dòng)建立都會(huì)導(dǎo)致程序運(yùn)行非常緩慢。
然而如果使用基于C的API,通過(guò)AndroidNDK來(lái)編寫一些游戲類程序可能會(huì)帶來(lái)意想不到的收獲。
提議
在Golang 1.4周期中,Android平臺(tái)的編譯將納入Go的源,并且包含Android支持的cgo(由Elias Naur貢獻(xiàn))。Dalvik-loadable .so外部連接文件的支持也會(huì)由Android NDK提供。
在發(fā)布上我們?nèi)匀惶峁┙徊嫫脚_(tái)編譯,并且支持在Linux主機(jī)上adb工具在Android設(shè)備上測(cè)試程序。
我們將會(huì)提供一個(gè)名叫g(shù)o.mobile的子版本,包含:
1、通過(guò)Android NDK對(duì)OpenGL,OpenSL和OpenMAX的支持。
2、一個(gè)Java-Go的工具,支持通過(guò)Java調(diào)用Go的Package,所以許多游戲的菜單UI可以通過(guò)標(biāo)準(zhǔn)SDK構(gòu)建。(有可能會(huì)支持通過(guò)其他語(yǔ)言調(diào)用Go,比如Objective-C。)
3、集成AndroidStudio
新特性將會(huì)在Go1.4穩(wěn)定版中提供。
如何Golang開(kāi)發(fā)Android應(yīng)用:
一丶準(zhǔn)備
1.一臺(tái)Linux 64的機(jī)器
2.一個(gè)帶有AndroidStudioIDE的開(kāi)發(fā)機(jī)器
因?yàn)榄h(huán)境配置實(shí)在復(fù)雜,所以引入的docker。
docker pull codeskyblue/docker-goandroid
docker run --rm -ti codeskyblue/docker-goandroid bash
cd example; echo "view example projects
docker起來(lái)之后,什么就都配置好了,NDK,java,GO的環(huán)境變量了,等等,并且還預(yù)裝了vim,gradle,tmux,git,syncthing,svn
二丶代碼
1.寫代碼之前,先約定下目錄結(jié)構(gòu)
go的代碼都放在src/golib下,編譯使用make.bash編譯腳本,看下這個(gè)文件樹(shù)
.
|-- app.iml
|-- build.gradle
|-- libs/armeabi-v7a # go編譯生成的so文件
| ? ? ? ? ? ? ? `-- libgojni.so
|-- main.go_tmpl # 一個(gè)模板文件,先不用管它
|-- make.bash # 編譯腳本,用來(lái)生成.so和Java代碼
`-- src
|-- golib
| ? |-- hi
| ? | ? |-- go_hi#1438;#1438;#1438; # 自動(dòng)生成的代碼
| ? | ? | ? `-- go_hi.go
| ? | ? `-- hi.go # 需要編寫的代碼
| ? `-- main.go
`-- main
? ?|-- AndroidManifest.xml
? ?|-- java
? ?| ? |-- go # 自動(dòng)生成的代碼
? ?| ? | ? |-- Go.java
? ?| ? | ? |-- Seq.java
? ?| ? | ? `-- hi
? ?| ? | ? ? ? `-- Hi.java
? ?| ? `-- me/shengxiang/gohello # 主要的邏輯代碼
? ?| ? ? ? ? ? ? ? ? ? ? ?`-- MainActivity.java#1438;#1438;#1438;
? ?`-- res
2.寫了一個(gè)例子
git clone
3.編譯下,試試行不行(就算不行問(wèn)題應(yīng)該也不大,因?yàn)榇髥?wèn)題都被消滅了)
cd GoHello/app
./make.bash
../gradlew build
4.一切順利的話在build/outputs/apk下應(yīng)該可以看到app-debug.apk這個(gè)文件。
編譯好的放到qiniu上了,可以點(diǎn)擊下載看看
下面可以嘗試改改
打開(kāi)hi.go這個(gè)文件
hi.go的內(nèi)容,比較簡(jiǎn)單,寫Go代碼主要就是這部分
// Package hi provides a function for saying hello.
package hi
import "fmt"
func Hello(name string) {
fmt.Printf("Hello, %s!\n", name)
return "(Go)World"
}
5.文件末尾添加下面這行代碼
func Welcome(name string) string {
return fmt.Sprintf("Welcome %s to the go world", name)
}
使用./make.bash重新編譯下
6.打開(kāi)MainActivity.java?修改下OnClickListener事件
button.setOnClickListener(new View.OnClickListener() {
? ?@Override
? ?public void onClick(View v) {
? ? ? ?String message = Hi.Welcome("yourname");
? ? ? ?Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
? ?}
});
編譯運(yùn)行下,把生成的apk安裝到手機(jī)上試試。
網(wǎng)站標(biāo)題:go語(yǔ)言開(kāi)發(fā)板 go語(yǔ)言開(kāi)發(fā)平臺(tái)
轉(zhuǎn)載注明:http://muchs.cn/article44/hgsghe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、域名注冊(cè)、ChatGPT、小程序開(kāi)發(fā)、品牌網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航
聲明:本網(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)