Go語(yǔ)言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語(yǔ)言教程(Golang教程)通俗易懂,深入淺出,既適合沒(méi)有基礎(chǔ)的讀者快速入門(mén),也適合工作多年的程序員查閱知識(shí)點(diǎn)。
成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元拜泉做網(wǎng)站,已為上家服務(wù),為拜泉各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
Go 語(yǔ)言
這套教程在講解一些知識(shí)點(diǎn)時(shí),將 Go 語(yǔ)言和其他多種語(yǔ)言進(jìn)行對(duì)比,讓掌握其它編程語(yǔ)言的讀者能迅速理解 Go 語(yǔ)言的特性。Go語(yǔ)言從底層原生支持并發(fā),無(wú)須第三方庫(kù)、開(kāi)發(fā)者的編程技巧和開(kāi)發(fā)經(jīng)驗(yàn)就可以輕松搞定。
Go語(yǔ)言(或 Golang)起源于 2007 年,并在 2009 年正式對(duì)外發(fā)布。Go 是非常年輕的一門(mén)語(yǔ)言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語(yǔ)言的開(kāi)發(fā)速度和 C/C++ 等編譯型語(yǔ)言的性能與安全性”。
Go語(yǔ)言是編程語(yǔ)言設(shè)計(jì)的又一次嘗試,是對(duì)類C語(yǔ)言的重大改進(jìn),它不但能讓你訪問(wèn)底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語(yǔ)言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語(yǔ)言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡(jiǎn)單、并發(fā)性好、語(yǔ)言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國(guó)內(nèi)諸多 IT 公司均已采用Go語(yǔ)言開(kāi)發(fā)項(xiàng)目。Go語(yǔ)言有時(shí)候被描述為“C 類似語(yǔ)言”,或者是“21 世紀(jì)的C語(yǔ)言”。Go 從C語(yǔ)言繼承了相似的表達(dá)式語(yǔ)法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語(yǔ)言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無(wú)縫適配。
因?yàn)镚o語(yǔ)言沒(méi)有類和繼承的概念,所以它和 Java 或 C++ 看起來(lái)并不相同。但是它通過(guò)接口(interface)的概念來(lái)實(shí)現(xiàn)多態(tài)性。Go語(yǔ)言有一個(gè)清晰易懂的輕量級(jí)類型系統(tǒng),在類型之間也沒(méi)有層級(jí)之說(shuō)。因此可以說(shuō)Go語(yǔ)言是一門(mén)混合型的語(yǔ)言。
此外,很多重要的開(kāi)源項(xiàng)目都是使用Go語(yǔ)言開(kāi)發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語(yǔ)言,Go 使用編譯器來(lái)編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時(shí),編譯器檢查錯(cuò)誤、優(yōu)化性能并輸出可在不同平臺(tái)上運(yùn)行的二進(jìn)制文件。要?jiǎng)?chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。
使用文本編輯器創(chuàng)建 Go 程序;
保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語(yǔ)言,它們不包含編譯步驟。Go 自帶了編譯器,因此無(wú)須單獨(dú)安裝編譯器。
鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國(guó)教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開(kāi)展的“智慧學(xué)習(xí)工場(chǎng)2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專業(yè)”試點(diǎn)工作站。專業(yè)站立足為學(xué)生提供多樣化成長(zhǎng)路徑,推進(jìn)專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
運(yùn)算符用于在程序運(yùn)行時(shí)執(zhí)行數(shù)學(xué)或邏輯運(yùn)算。
1.算術(shù)運(yùn)算符
Go 語(yǔ)言的算術(shù)運(yùn)算符如圖,假設(shè)A值為10,B值為20。
2.關(guān)系運(yùn)算符
Go 語(yǔ)言的關(guān)系運(yùn)算符如圖,假設(shè)A值為10,B值為20。
3.邏輯運(yùn)算符
Go 語(yǔ)言的邏輯運(yùn)算符如圖。假定A值為T(mén)rue,B值為False。
4.位運(yùn)算符
位運(yùn)算符對(duì)整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作。
位運(yùn)算符比一般的算術(shù)運(yùn)算符速度要快,而且可以實(shí)現(xiàn)一些算術(shù)運(yùn)算符不能實(shí)現(xiàn)的功能。如果要開(kāi)發(fā)高效率程序,位運(yùn)算符是必不可少的。
Go 語(yǔ)言的位運(yùn)算符如圖。假定 A = 60,B = 13,其二進(jìn)制數(shù)轉(zhuǎn)換如下。
A = 0011 1100
B = 0000 1101
5.賦值運(yùn)算符
Go 語(yǔ)言的賦值運(yùn)算符如圖。
6.其他運(yùn)算符
Go 語(yǔ)言的其他運(yùn)算符如圖。
運(yùn)算符的優(yōu)先級(jí)
所謂優(yōu)先級(jí),就是當(dāng)多個(gè)運(yùn)算符出現(xiàn)在同一個(gè)表達(dá)式中時(shí),先執(zhí)行哪個(gè)運(yùn)算符。
Go語(yǔ)言作為出現(xiàn)比較晚的一門(mén)編程語(yǔ)言,在其原生支持高并發(fā)、云原生等領(lǐng)域的優(yōu)秀表現(xiàn),像目前比較流行的容器編排技術(shù)Kubernetes、容器技術(shù)Docker都是用Go語(yǔ)言寫(xiě)的,像Java等其他面向?qū)ο蟮恼Z(yǔ)言,雖然也能做云原生相關(guān)的開(kāi)發(fā),但是支持的程度遠(yuǎn)沒(méi)有Go語(yǔ)言高,憑借其語(yǔ)言特性和簡(jiǎn)單的編程方式,彌補(bǔ)了其他編程語(yǔ)言一定程度上的不足,一度成為一個(gè)熱門(mén)的編程語(yǔ)言。
最近在學(xué)習(xí)Go語(yǔ)言,我之前使用過(guò)C#、Java等面向?qū)ο缶幊痰恼Z(yǔ)言,發(fā)現(xiàn)其中有很多的編程方式和其他語(yǔ)言有區(qū)別的地方,好記性不如爛筆頭,總結(jié)一下,和其他語(yǔ)言做個(gè)對(duì)比。這里只總結(jié)差異的地方,具體的語(yǔ)法不做詳細(xì)的介紹。
種一棵樹(shù)最好的時(shí)間是十年前,其次是現(xiàn)在。
3)變量初始化時(shí)候可以和其他語(yǔ)言一樣直接在變量后面加等號(hào),等號(hào)后面為要初始化的值,也可以使用變量名:=變量值的簡(jiǎn)單方式
3)變量賦值 Go語(yǔ)言的變量賦值和多數(shù)語(yǔ)言一致,但是Go語(yǔ)言提供了多重賦值的功能,比如下面這個(gè)交換i、j變量的語(yǔ)句:
在不支持多重賦值的語(yǔ)言中,交換兩個(gè)變量的值需要引入一個(gè)中間變量:
4)匿名變量
在使用其他語(yǔ)言時(shí),有時(shí)候要獲取一個(gè)值,卻因?yàn)樵摵瘮?shù)返回多個(gè)值而不得不定義很多沒(méi)有的變量,Go語(yǔ)言可以借助多重返回值和匿名變量來(lái)避免這種寫(xiě)法,使代碼看起來(lái)更優(yōu)雅。
假如GetName()函數(shù)返回3個(gè)值,分別是firstName,lastName和nickName
若指向獲得nickName,則函數(shù)調(diào)用可以這樣寫(xiě)
這種寫(xiě)法可以讓代碼更清晰,從而大幅降低溝通的復(fù)雜度和維護(hù)的難度。
1)基本常量
常量使用關(guān)鍵字const 定義,可以限定常量類型,但不是必須的,如果沒(méi)有定義常量的類型,是無(wú)類型常量
2)預(yù)定義常量
Go語(yǔ)言預(yù)定義了這些常量 true、false和iota
iota比較特殊,可以被任務(wù)是一個(gè)可被編譯器修改的常量,在每個(gè)const關(guān)鍵字出現(xiàn)時(shí)被重置為0,然后在下一個(gè)const出現(xiàn)之前每出現(xiàn)一個(gè)iota,其所代表的數(shù)字會(huì)自動(dòng)加1.
3)枚舉
1)int 和int32在Go語(yǔ)言中被認(rèn)為是兩種不同類型的類型
2)Go語(yǔ)言定義了兩個(gè)浮點(diǎn)型float32和float64,其中前者等價(jià)于C語(yǔ)言的float類型,后者等價(jià)于C語(yǔ)言的double類型
3)go語(yǔ)言支持復(fù)數(shù)類型
復(fù)數(shù)實(shí)際上是由兩個(gè)實(shí)數(shù)(在計(jì)算機(jī)中使用浮點(diǎn)數(shù)表示)構(gòu)成,一個(gè)表示實(shí)部(real)、一個(gè)表示虛部(imag)。也就是數(shù)學(xué)上的那個(gè)復(fù)數(shù)
復(fù)數(shù)的表示
實(shí)部與虛部
對(duì)于一個(gè)復(fù)數(shù)z=complex(x,y),就可以通過(guò)Go語(yǔ)言內(nèi)置函數(shù)real(z)獲得該復(fù)數(shù)的實(shí)部,也就是x,通過(guò)imag(z)獲得該復(fù)數(shù)的虛部,也就是y
4)數(shù)組(值類型,長(zhǎng)度在定義后無(wú)法再次修改,每次傳遞都將產(chǎn)生一個(gè)副本。)
5)數(shù)組切片(slice)
數(shù)組切片(slice)彌補(bǔ)了數(shù)組的不足,其數(shù)據(jù)結(jié)構(gòu)可以抽象為以下三個(gè)變量:
6)Map 在go語(yǔ)言中Map不需要引入任何庫(kù),使用很方便
Go循環(huán)語(yǔ)句只支持for關(guān)鍵字,不支持while和do-while
goto語(yǔ)句的語(yǔ)義非常簡(jiǎn)單,就是跳轉(zhuǎn)到本函數(shù)內(nèi)的某個(gè)標(biāo)簽
今天就介紹到這里,以后我會(huì)在總結(jié)Go語(yǔ)言在其他方面比如并發(fā)編程、面向?qū)ο蟆⒕W(wǎng)絡(luò)編程等方面的不同及使用方法。希望對(duì)大家有所幫助。
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ǔ)言。現(xiàn)有編程語(yǔ)言均未專門(mén)對(duì)多核處理器進(jìn)行優(yōu)化。Go就是谷歌工程師為這類程序編寫(xiě)的一種語(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可以讓?xiě)?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é)處理器。"
作為一個(gè)測(cè)試,作為一個(gè)測(cè)試開(kāi)發(fā), 全棧化+管理 是我們未來(lái)的發(fā)展方向。已經(jīng)掌握了Java、Python、HTML的你,是不是也想了解下最近異常火爆的Go語(yǔ)言呢?來(lái)吧,讓我們一起了解下。
Go 是一個(gè)開(kāi)源的編程語(yǔ)言 ,它能讓構(gòu)造簡(jiǎn)單、可靠且高效的軟件變得容易。
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開(kāi)發(fā),后來(lái)還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開(kāi)源,在2012年早些時(shí)候發(fā)布了Go 1穩(wěn)定版本。現(xiàn)在Go的開(kāi)發(fā)已經(jīng)是完全開(kāi)放的,并且擁有一個(gè)活躍的社區(qū)。這三個(gè)人都是計(jì)算機(jī)界的大神,有的參與了C語(yǔ)言的編寫(xiě),有的還是數(shù)學(xué)大神,有的還獲得了計(jì)算機(jī)最高榮譽(yù)-圖靈獎(jiǎng)。
接下來(lái)說(shuō)說(shuō) Go語(yǔ)言的特色 :
簡(jiǎn)潔、快速、安全
并行、有趣、開(kāi)源
內(nèi)存管理、數(shù)組安全、編譯迅速
Go語(yǔ)言的用途 :
Go 語(yǔ)言被設(shè)計(jì)成一門(mén)應(yīng)用于搭載 Web 服務(wù)器,存儲(chǔ)集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語(yǔ)言。
對(duì)于高性能分布式系統(tǒng)領(lǐng)域而言,Go 語(yǔ)言無(wú)疑比大多數(shù)其它語(yǔ)言有著更高的開(kāi)發(fā)效率。它提供了海量并行的支持,這對(duì)于 游戲 服務(wù)端的開(kāi)發(fā)而言是再好不過(guò)了。
Go語(yǔ)言的環(huán)境安裝:
建議直接打開(kāi) 官方地址因?yàn)閴Φ脑虼虿婚_(kāi)
因?yàn)槲矣玫氖莣indows系統(tǒng),這里主要講下Windows系統(tǒng)上使用Go語(yǔ)言來(lái)編程。
Windows 下可以使用 .msi 后綴(在下載列表中可以找到該文件,如go1.17.2.windows-amd64.msi)的安裝包來(lái)安裝。
默認(rèn)情況下 .msi 文件會(huì)安裝在 c:Go 目錄下。你可以將 c:Gobin 目錄添加到 Path 環(huán)境變量中。添加后你需要重啟命令窗口才能生效。個(gè)人建議還是安裝到 Program Files文件夾中。
使用什么開(kāi)發(fā)工具來(lái)對(duì)Go語(yǔ)言進(jìn)行編寫(xiě):
個(gè)人建議用VS code, 也可以用Sublime Text來(lái)編輯。如果你之前看了我講的HTML語(yǔ)言的學(xué)習(xí),肯定已經(jīng)下載了VS code. 那么這時(shí)你需要在VS code中下載Go語(yǔ)言的擴(kuò)展插件。
這里有一個(gè)巨大的坑,就是在下載Go的插件和依賴包時(shí),會(huì)提示一些包沒(méi)有。主要是因?yàn)橄螺d的依賴包部分被墻了,只能想別的辦法去下載。
建議參考網(wǎng)頁(yè):
解決vscode中g(shù)olang插件安裝失敗方法
在學(xué)習(xí)go的過(guò)程中,使用的是vscode,但是一直提示安裝相關(guān)插件失敗,然后上網(wǎng)查方法,基本上是叫你建立golang.org目錄什么的,結(jié)果全是錯(cuò)的,而且都是抄襲,很煩。無(wú)意之中看到一位博主分享的方法,他也是飽受上述的垃圾博文困擾,然后找到了解決方法,這里向他致敬,秉著讓更多人看到正確解決方法的心,我寫(xiě)下正確的解決方法,希望對(duì)你有所幫助,也可以點(diǎn)開(kāi)原博主鏈接參考:
Go有一個(gè)全球模塊代理,設(shè)置代理再去安裝golang的插件,就可以安裝成功了。步驟有,首先Windows用戶打開(kāi)Powershell,一個(gè)藍(lán)色的界面,注意不是cmd!不知道的直接打開(kāi)window下面的搜索,然后輸入powershell,搜索出來(lái)就可以了。
$env:GO111MODULE=“on”
$env:GOPROXY=“”
go env -w GOPROXY=
go env -w GOPRIVATE=*.corp.example.com
然后我們打開(kāi)VsCode界面,下面會(huì)提示安裝插件,我們選擇Install ALL,就會(huì)安裝成功
當(dāng)你在運(yùn)行Go語(yǔ)言程序時(shí),提示所有的插件包都已經(jīng)安裝成功了時(shí),就可以正常使用了,要不然一堆報(bào)錯(cuò)會(huì)讓你非常心煩。
好了,今天先到這里,晚安、下班~
本教程介紹了使用 Godatabase/sql及其標(biāo)準(zhǔn)庫(kù)中的包訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)。
您將使用的database/sql包包括用于連接數(shù)據(jù)庫(kù)、執(zhí)行事務(wù)、取消正在進(jìn)行的操作等的類型和函數(shù)。
在本教程中,您將創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),然后編寫(xiě)代碼來(lái)訪問(wèn)該數(shù)據(jù)庫(kù)。您的示例項(xiàng)目將是有關(guān)老式爵士樂(lè)唱片的數(shù)據(jù)存儲(chǔ)庫(kù)。
首先,為您要編寫(xiě)的代碼創(chuàng)建一個(gè)文件夾。
1、打開(kāi)命令提示符并切換到您的主目錄。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,為您的代碼創(chuàng)建一個(gè)名為 data-access 的目錄。
3、創(chuàng)建一個(gè)模塊,您可以在其中管理將在本教程中添加的依賴項(xiàng)。
運(yùn)行g(shù)o mod init命令,為其提供新代碼的模塊路徑。
此命令創(chuàng)建一個(gè) go.mod 文件,您添加的依賴項(xiàng)將在其中列出以供跟蹤。
注意: 在實(shí)際開(kāi)發(fā)中,您會(huì)指定一個(gè)更符合您自己需求的模塊路徑。有關(guān)更多信息,請(qǐng)參閱一下文章。
GO語(yǔ)言(二十五):管理依賴項(xiàng)(上)
GO語(yǔ)言(二十六):管理依賴項(xiàng)(中)
GO語(yǔ)言(二十七):管理依賴項(xiàng)(下)
接下來(lái),您將創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
在此步驟中,您將創(chuàng)建要使用的數(shù)據(jù)庫(kù)。您將使用 DBMS 本身的 CLI 創(chuàng)建數(shù)據(jù)庫(kù)和表,以及添加數(shù)據(jù)。
您將創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),其中包含有關(guān)黑膠唱片上的老式爵士樂(lè)錄音的數(shù)據(jù)。
這里的代碼使用MySQL CLI,但大多數(shù) DBMS 都有自己的 CLI,具有類似的功能。
1、打開(kāi)一個(gè)新的命令提示符。
在命令行,登錄到您的 DBMS,如下面的 MySQL 示例所示。
2、在mysql命令提示符下,創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
3、切到您剛剛創(chuàng)建的數(shù)據(jù)庫(kù),以便您可以添加表。
4、在文本編輯器的 data-access 文件夾中,創(chuàng)建一個(gè)名為 create-tables.sql 的文件來(lái)保存用于添加表的 SQL 腳本。
將以下 SQL 代碼粘貼到文件中,然后保存文件。
在此 SQL 代碼中:
(1)刪除名為album表。 首先執(zhí)行此命令可以讓您更輕松地稍后重新運(yùn)行腳本。
(2)創(chuàng)建一個(gè)album包含四列的表:title、artist和price。每行的id值由 DBMS 自動(dòng)創(chuàng)建。
(3)添加帶有值的四行。
5、在mysql命令提示符下,運(yùn)行您剛剛創(chuàng)建的腳本。
您將使用以下形式的source命令:
6、在 DBMS 命令提示符處,使用SELECT語(yǔ)句來(lái)驗(yàn)證您是否已成功創(chuàng)建包含數(shù)據(jù)的表。
接下來(lái),您將編寫(xiě)一些 Go 代碼進(jìn)行連接,以便進(jìn)行查詢。
現(xiàn)在你已經(jīng)有了一個(gè)包含一些數(shù)據(jù)的數(shù)據(jù)庫(kù),開(kāi)始你的 Go 代碼。
找到并導(dǎo)入一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序會(huì)將您通過(guò)database/sql包中的函數(shù)發(fā)出的請(qǐng)求轉(zhuǎn)換為數(shù)據(jù)庫(kù)可以理解的請(qǐng)求。
1、在您的瀏覽器中,訪問(wèn)SQLDrivers wiki 頁(yè)面以識(shí)別您可以使用的驅(qū)動(dòng)程序。
2、使用頁(yè)面上的列表來(lái)識(shí)別您將使用的驅(qū)動(dòng)程序。為了在本教程中訪問(wèn) MySQL,您將使用 Go-MySQL-Driver。
3、請(qǐng)注意驅(qū)動(dòng)程序的包名稱 - 此處為github.com/go-sql-driver/mysql.
4、使用您的文本編輯器,創(chuàng)建一個(gè)用于編寫(xiě) Go 代碼的文件,并將該文件作為 main.go 保存在您之前創(chuàng)建的數(shù)據(jù)訪問(wèn)目錄中。
5、進(jìn)入main.go,粘貼以下代碼導(dǎo)入驅(qū)動(dòng)包。
在此代碼中:
(1)將您的代碼添加到main包中,以便您可以獨(dú)立執(zhí)行它。
(2)導(dǎo)入 MySQL 驅(qū)動(dòng)程序github.com/go-sql-driver/mysql。
導(dǎo)入驅(qū)動(dòng)程序后,您將開(kāi)始編寫(xiě)代碼以訪問(wèn)數(shù)據(jù)庫(kù)。
現(xiàn)在編寫(xiě)一些 Go 代碼,讓您使用數(shù)據(jù)庫(kù)句柄訪問(wèn)數(shù)據(jù)庫(kù)。
您將使用指向結(jié)構(gòu)的指針sql.DB,它表示對(duì)特定數(shù)據(jù)庫(kù)的訪問(wèn)。
編寫(xiě)代碼
1、進(jìn)入 main.go,在import您剛剛添加的代碼下方,粘貼以下 Go 代碼以創(chuàng)建數(shù)據(jù)庫(kù)句柄。
在此代碼中:
(3)使用 MySQL 驅(qū)動(dòng)程序Config和FormatDSN類型以收集連接屬性并將它們格式化為連接字符串的 DSN。
該Config結(jié)構(gòu)使代碼比連接字符串更容易閱讀。
(4)調(diào)用sql.Open 初始化db變量,傳遞 FormatDSN。
(5)檢查來(lái)自 的錯(cuò)誤sql.Open。例如,如果您的數(shù)據(jù)庫(kù)連接細(xì)節(jié)格式不正確,它可能會(huì)失敗。
為了簡(jiǎn)化代碼,您調(diào)用log.Fatal結(jié)束執(zhí)行并將錯(cuò)誤打印到控制臺(tái)。在生產(chǎn)代碼中,您會(huì)希望以更優(yōu)雅的方式處理錯(cuò)誤。
(6)調(diào)用DB.Ping以確認(rèn)連接到數(shù)據(jù)庫(kù)有效。在運(yùn)行時(shí), sql.Open可能不會(huì)立即連接,具體取決于驅(qū)動(dòng)程序。您在Ping此處使用以確認(rèn) database/sql包可以在需要時(shí)連接。
(7)檢查來(lái)自Ping的錯(cuò)誤,以防連接失敗。
(8)Ping如果連接成功,則打印一條消息。
文件的頂部現(xiàn)在應(yīng)該如下所示:
3、保存 main.go。
1、開(kāi)始跟蹤 MySQL 驅(qū)動(dòng)程序模塊作為依賴項(xiàng)。
使用go get 添加 github.com/go-sql-driver/mysql 模塊作為您自己模塊的依賴項(xiàng)。使用點(diǎn)參數(shù)表示“獲取當(dāng)前目錄中代碼的依賴項(xiàng)”。
2、在命令提示符下,設(shè)置Go 程序使用的DBUSER和DBPASS環(huán)境變量。
在 Linux 或 Mac 上:
在 Windows 上:
3、在包含 main.go 的目錄中的命令行中,通過(guò)鍵入go run來(lái)運(yùn)行代碼。
連接成功了!
接下來(lái),您將查詢一些數(shù)據(jù)。
分享名稱:go語(yǔ)言數(shù)學(xué)基礎(chǔ)知識(shí) Go語(yǔ)言基礎(chǔ)
當(dāng)前地址:http://chinadenli.net/article32/hihgsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、網(wǎng)站營(yíng)銷、自適應(yīng)網(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)