Go 語言是一個試圖結合動態類型和靜態類型,編譯效率和安全性以及語言的易用性等眾多特性與一體的一種嘗試。他的另一個目標是支持現代的基于網絡的、基于多核的計算。最后,Go 還是非常快的,他可以在單個計算機上僅僅花費幾秒時間構建一個龐大的應用程序。使用GO語言開發android語言步驟如下:

專注于為中小企業提供網站建設、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業錦屏免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上1000家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
1. 下載安裝Go語言(版本1.5+)
Golang鏈接
回到頂部
2. 下載安裝 gomobile
下載
$ go get golang.org/x/mobile/cmd/gomobile
安裝(需要等待幾分鐘)
gomobile init
回到頂部
3. Golang開發手機應用有兩種方式
a. 原生應用開發
$ go get -d golang.org/x/mobile/example/basic
主要應用領域:
應用控制管理與配置
OpenGL ES 2 綁定
Asset 管理
Event 管理
試驗中的包,含有OpenAL 綁定、音頻、字體、圖形以及運動傳感器
Android開發
$ gomobile build -target=android golang.org/x/mobile/example/basic
此命令會生成名為basic的apk安裝包
$ gomobile install golang.org/x/mobile/example/basic
此命令將安裝apk包到已連接的android設備
直接嵌入c源代碼到go代碼里面
package main
/*
#include stdio.h
void myhello(int i) {
printf("Hello C: %d\n", i);
}
*/
import "C"
import "fmt"
func main() {
C.myhello(C.int(12))
fmt.Println("Hello Go");
}
需要注意的是C代碼必須放在注釋里面
import "C"語句和前面的C代碼之間不能有空行
運行結果
$ go build main.go ./main
Hello C: 12
Hello Go
分開c代碼到單獨文件
嵌在一起代碼結構不是很好看,很多人包括我,還是喜歡把兩個分開,放在不同的文件里面,顯得干凈,go源文件里面是go的源代碼,c源文件里面是c的源代碼。
$ ls
hello.c hello.h main.go
$ cat hello.h
void hello(int);
$ cat hello.c
#include stdio.h
void hello(int i) {
printf("Hello C: %d\n", i);
}
$ cat main.go
package main
// #include "hello.h"
import "C"
import "fmt"
func main() {
C.hello(C.int(12))
fmt.Println("Hello Go");
}
編譯運行
$ go build ./main
Hello C: 12
Hello Go
編譯成庫文件
如果c文件比較多,最好還是能夠編譯成一個獨立的庫文件,然后go來調用庫。
$ find mylib main
mylib
mylib/hello.h
mylib/hello.c
main
main/main.go
編譯庫文件
$ cd mylib
# gcc -fPIC -shared -o libhello.so hello.c
編譯go程序
$ cd main
$ cat main.go
package main
// #cgo CFLAGS: -I../mylib
// #cgo LDFLAGS: -L../mylib -lhello
// #include "hello.h"
import "C"
import "fmt"
func main() {
C.hello(C.int(12))
fmt.Println("Hello Go");
}
$ go build main.go
運行
$ export LD_LIBRARY_PATH=../mylib
$ ./main
Hello C: 12
Hello Go
在我們的例子中,庫文件是編譯成動態庫的,main程序鏈接的時候也是采用的動態庫
$ ldd main
linux-vdso.so.1 = (0x00007fffc7968000)
libhello.so = ../mylib/libhello.so (0x00007f513684c000)
libpthread.so.0 = /lib64/libpthread.so.0 (0x00007f5136614000)
libc.so.6 = /lib64/libc.so.6 (0x00007f5136253000)
/lib64/ld-linux-x86-64.so.2 (0x000055d819227000)
理論上講也是可以編譯成整個一靜態鏈接的可執行程序,由于我的機器上缺少靜態鏈接的系統庫,比如libc.a,所以只能編譯成動態鏈接。
Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎的讀者快速入門,也適合工作多年的程序員查閱知識點。
Go 語言
這套教程在講解一些知識點時,將 Go 語言和其他多種語言進行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發,無須第三方庫、開發者的編程技巧和開發經驗就可以輕松搞定。
Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發布。Go 是非常年輕的一門語言,它的主要目標是“兼具 Python 等動態語言的開發速度和 C/C++ 等編譯型語言的性能與安全性”。
Go語言是編程語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你訪問底層操作系統,還提供了強大的網絡編程和并發編程支持。Go語言的用途眾多,可以進行網絡編程、系統編程、并發編程、分布式編程。
Go語言的推出,旨在不損失應用程序性能的情況下降低代碼的復雜性,具有“部署簡單、并發性好、語言設計良好、執行性能好”等優勢,目前國內諸多 IT 公司均已采用Go語言開發項目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀的C語言”。Go 從C語言繼承了相似的表達式語法、控制流結構、基礎數據類型、調用參數傳值、指針等很多思想,還有C語言一直所看中的編譯后機器碼的運行效率以及和現有操作系統的無縫適配。
因為Go語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實現多態性。Go語言有一個清晰易懂的輕量級類型系統,在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。
此外,很多重要的開源項目都是使用Go語言開發的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進制(或字節碼)格式;在編譯代碼時,編譯器檢查錯誤、優化性能并輸出可在不同平臺上運行的二進制文件。要創建并運行 Go 程序,程序員必須執行如下步驟。
使用文本編輯器創建 Go 程序;
保存文件;編譯程序;運行編譯得到的可執行文件。
這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的“智慧學習工場2020-學碩創新工作站 ”唯一獲準的“區塊鏈技術專業”試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
1、服務器編程:以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日志、數據打包、虛擬機處理、文件系統等。
2、分布式系統、數據庫代理器、中間件:例如Etcd。
3、網絡編程:這一塊目前應用最廣,包括Web應用、API應用、下載應用,而且Go內置的net/http包基本上把我們平常用到的網絡功能都實現了。
4、開發云平臺:目前國外很多云平臺在采用Go開發,我們所熟知的七牛云、華為云等等都有使用Go進行開發并且開源的成型的產品。
5、區塊鏈:目前有一種說法,技術從業人員把Go語言稱作為區塊鏈行業的開發語言。如果大家學習區塊鏈技術的話,就會發現現在有很多很多的區塊鏈的系統和應用都是采用Go進行開發的,比如ehtereum是目前知名度最大的公鏈,再比如fabric是目前最知名的聯盟鏈,兩者都有go語言的版本,且go-ehtereum還是以太坊官方推薦的版本。
自1.0版發布以來,go語言引起了眾多開發者的關注,并得到了廣泛的應用。go語言簡單、高效、并發的特點吸引了許多傳統的語言開發人員,其數量也在不斷增加。
使用 Go 語言開發的開源項目非常多。早期的 Go 語言開源項目只是通過 Go 語言與傳統項目進行C語言庫綁定實現,例如 Qt、Sqlite 等。
后期的很多項目都使用 Go 語言進行重新原生實現,這個過程相對于其他語言要簡單一些,這也促成了大量使用 Go 語言原生開發項目的出現。
1、下載go的zip文件。并且一定要把文件解壓到c:\go目錄下。
2、配置windows的高級環境變量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path變量里面把c:\go\bin加入。以便可以在命令行直接運行go命令。
舉例:我的機器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安裝路徑;
F:\workspace\goSample01是我寫的go語言項目的工程目錄;
F:\workspace\goSample01\bin是go語言項目的工程目錄下的可執行文件路徑;
3、在完成環境變量配置后,打開一個命令行窗口,直接輸入go,然后回車,看看是否出現go的幫助信息。如果出現,那么go的基本環境就OK了。
注意:這個基本環境不包含開發工具,也不能直接編譯帶C代碼的go程序。
4、(可選)為了支持Import遠程包,最好裝個gomingw。下載地址:。如果下的是壓縮包,請把它解壓到C盤。例如,C:\gowin-env。里面有個Console.bat是以后使用go get的環境。舉例:有個文件a.go,里面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動Console.bat,然后在該命令行窗口,進入c:\go\src目錄下,執行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go會自動下載該遠程包并編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開發工具,請跳過這個配置。)
1、下載并安裝goclipse插件。Goclipse是go語言for eclipse的插件,下載地址:
2、啟動eclipse并創建go項目。然后寫個最簡單的helloworld.go文件,并運行。代碼如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可選)
如果不需要go語法輔助和eclipse里面的(按ALT+/)彈出go語言自動輔助功能,請跳過這個配置。
1、下載gocode的zip文件,解壓后放在go的bin目錄下。
2、下載并安裝Git軟件。并且在path里面配置git的執行路徑。例如c:\git\bin
3、在命令行執行:go build .\gocode。如果一切正常,那么將會編譯生成一個gocode.exe文件在go的bin目錄下。如果編譯失敗,那么就轉第4步。
4、如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過git下載gocode源文件,然后再編譯。在命令行執行:go get -u github.com/nsf/gocode 。就會生成gocode.exe文件。
5、在goclipse插件里面指定gocode的路徑。就可以在elcipse里面調用gocode來幫助寫編碼了。
從開發工具這塊看,go語言還不夠成熟,開發工具都還不完善,有待改進。
下載go-tour教程源代碼(可選)
Google有個在線運行go語言的教程(),很不錯。支持在web上直接運行大部分的go程序,想了解這個教程的源代碼的朋友可以通過以下方式獲取。如果沒興趣,可以跳過這個步驟。
1、下載安裝Mercurial軟件。
2、在命令行下輸入:
hg clone
這個URL是我從google的go-tour源代碼的一個clone。作為測試用的。如果把http改成https協議,下載就會失敗。搞不懂。
編譯帶調用C代碼的go文件(可選)
1、為了在windows下編譯帶C代碼的go程序,你首先需要下載并安裝MinGW或者Cygwin。
2、首選安裝MinGW。在安裝MinGW之后,記得要把MinGW安裝目錄\bin路徑設置在path環境變量里面,以便能在dos窗口下直接調用gcc。
3、下載一個gowin-env。下載地址:gowin-env。下載后解壓到某個目錄下,例如:C:\gowin-env. 然后,編輯go-env.bat。配置相關的go參數。例如,我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
設置好go-env.bat后,就可以點擊Console.bat來啟動編譯和運行窗口。
4、編寫一個帶C代碼的go程序。例如,testc.go
5、編譯
例如:
go build -compiler gccgo test_c.go
運行調用C代碼的go文件(可選)
1、testc.go.
創建rand目錄,然后在rand里面創建testc.go. 代碼如下:
package rand
/*
//
#include stdio.h
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下創建a.go.代碼如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一級創建test_import.go。代碼如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、運行test_import.go
go run test_import.go
在測試其它幾個C代碼的時候,發現windows版本的cgo還有些編譯問題,同樣的代碼轉移到蘋果的XCODE下就沒有問題。后來終于發現原因了,原來有些例子是unix平臺下的,而在windows平臺下,方法名和參數需要做調整。
例如:下面代碼在windows下編譯報一堆錯誤。
package rand
/*
#include stdlib.h
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
這里需要把return int(C.random()) 修改為“return int(C.rand())”
C.srandom(C.uint(i))修改為“C.srand(C.uint(i))”編譯就OK了。
當前文章:go語言如何混合編程 go編程基礎
新聞來源:http://www.yijiale78.com/article30/hihipo.html
成都網站建設公司_創新互聯,為您提供面包屑導航、靜態網站、軟件開發、自適應網站、網站改版、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯