日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Go语言】【17】GO语言杂谈

發布時間:2023/12/16 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Go语言】【17】GO语言杂谈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章節原想進一步寫并寫的相關知識,但今天不在狀態臨時改為雜談,原因有二

  • 我也想靜靜 (參見秋褲大叔)

  • 對前面沒有涉及到的問題給一個交待


一、安裝Git

? ?當下是一個開源的時代,經常遛論壇的朋友肯定會遇到不少開源的組件、框架等,比如

  • 前端JS有Angular

  • 服務端框架有Spring

  • 數據庫有Cockroach DB

  • 云計算的PaaS有Cloud Foundary

? ?就連GO都是開源語言,謝大針對GO搞了一個Beego框架等等,不勝枚舉......


? ? ?既然有這么多的開源,那總得有一個地方放這些開源代碼吧(即代碼倉庫),所以Github就應時而生,具體網址為https://github.com/;好吧,Github是一個存放開源代碼的倉庫,作為開源的愛好者若想要貢獻點代碼,就需要有一個能提交代碼的客戶端,于是我們下面就說一下Git客戶端的安裝:

1、打開Github網址

? ? ?要安裝Git客戶端,首先要下載;若要下載就得打開github.com,然后拖到網頁的最下面,看到類似下圖鏈接??

2、下載Github

? ? ? 在1中點擊“Download GitHub for Windows”后,就會開始下載,下載完畢后看到下面圖標

??

3、安裝Github? ? ??

? ? ? 雙擊進行安裝,由于它是在亞馬遜公有云的S3上存儲的,所以下載時間稍微會慢一些

? ? ??

? ? ? 安裝完畢后界面上會出現兩個圖標,一個是GUI形式的,一個是腳本形式的

? ?


二、什么是GOPATH?

? ? ? ?使用Go寫代碼有一個環境變量GOPATH需要設置,這個變量起什么作用呢?我們可以這樣理解:“Go的工作空間是一個目錄 ,該目錄由src、pkg、bin三個目錄,而GOPATH是Go語言關聯工作空間的變量!”,例如:

  • 把Go語言安裝在E:\盤,那么環境變量GOROOT即為E:\Go

  • 要寫Go代碼,把代碼存放在E:\Go\workspace\src下,那么環境變量GOPATH即為E:\Go\workspace


三、使用Beego開發Web應用

1、什么是Beego?

? ? ?引用謝大的beego簡介原話吧:“beego 是一個快速開發 Go 應用的 HTTP 框架,他可以用來快速開發 API、Web 及后端服務等各種應用,是一個 RESTful 的框架,主要設計靈感來源于 tornado、sinatra 和 flask 這三個框架,但是結合了 Go 本身的一些特性(interface、struct 嵌入等)而設計的一個框架“


2、下載Beego

(1)雙擊Git Shell,打開Git腳本窗口

(2)切換到GOPATH路徑。由于我是使用的win8操作系統,同時把GOPATH設置為E:\Go\workspace,所以需要先切換到E盤,使用“cd E:”實現切換,而不是“E:”回車

(3)下載beego代碼

執行go get github.com/astaxie/beego

若沒有報錯說明下載成功,同時會在GOPATH下生成pkg、src兩個文件夾,同時src下有beego代碼


【備注】:若使用上網代理的話,需要配置代理,即在C:\Users\xxxx\.gitconfig文件中增加

[http]

????proxy = proxycn8.pwm.com:8080 sslVerify = false

[https]

????proxy = proxycn8.pwm.com:8080 sslVerify = false



3、下載bee

為了快速地搭建Web工程,beego為我們提供了一個工具(bee)

執行go get github.com/beego/bee

稍等一下若沒有報錯,說明下載成功,其目錄結構如下:

在E:\Go\workspace下自動創建了一個src目錄,在src下創建了github.com目錄,里面有兩個工程,分別對應著beego和bee


4、創建Web工程

(1)先進入src目錄

執行cd src

(2)創建Web工程pwm

執行bee new pwm,其中pwm為工程名

此時的目錄結構如下:

與前面比較可以發現,在src目錄下多了一個pwm目錄,里面放置著文件夾和文件。從名稱上不難猜測,conf應該是放置工程配置文件的;controllers對應著MVC的C,里面應該是放控制器文件的;models對應著M,里面應該是放模型數據文件的......


5、運行Web工程

(1)進入pwm目錄

執行cd pwm

(2)啟動pwm工程的main.go主函數

執行go run main.go

在執行期間沒有出現問題的話,會打印出如上圖的信息“http server Running on :8080”,告訴Web服務已啟動,監聽端口為8080。

當然若出現端口沖突可以修改pwm/conf/app.conf文件

(3)在瀏覽器中輸入http://localhost:8080查看運行結果 ?

我非常喜歡這個圖標,很有寓意,相當于給Go語言的logo穿上了蜜蜂衣 :)


當然在這個Web工程中我們什么都沒有做,全由bee工具幫我們做好了,若我們想進一步想開發Web,就需要在pwm這個工程上縫縫補補就可以了。



三、接口賦值

前段時間看許式偉寫的《Go語言編程》一書,里面提及到接口賦值,感覺挺新穎,拿過來分享一下:

定義LessAdder接口,里面定義Less、Add兩個方法

type LessAdder interface {

? ? ? ? Less(b Integer) bool

? ? ? ? Add(b Integer)

}

定義一個類型,讓它實現這兩個方法

type Integer int


func (a Integer) Less(b Integer) bool {

? ? ? ? return a < b

}


func (a Integer) Add(b Integer) {

? ? ? ? a += b

}

根據Go語言特點,類型實現了接口中定義的方法,就相當于Integer繼承了該接口(非侵入式),所以測試代碼為:


var a Integer = 1

var la LessAdder = a ??// 重點關注此行,把Integer類型賦值給LessAdder類型

fmt.Println("la = ", la)

運行該代碼會發現程序正常,沒有錯誤拋出。這說明該行為與繼承是一致的,按《Java編程思想》的叫說:“is-a”,即向上轉型,孩子具備父親的特征,不需要強制轉型。


1、下面我們改造一下Integer的Add()方法:

因為目前的Add()沒有意義,它沒有定義返回值,同時由于是值傳遞,所以這個方法無法獲得a+b的值,修改如下

// 采用指針的方法獲取a + b的值

func (a *Integer) Add(b Integer) {

? ? ? ? *a += b

}

運行會發現報錯了

.\main.go:24:?cannot use a (type Integer) as type LessAdder in assignment:

Integer does not implement LessAdder (Add method has pointer receiver)

這個錯誤告訴我們,Integer并沒有實現LessAdder,即Integer的方法并沒有實現LessAdder定義的兩個方法。我們Just修改了Add()方法,哪該如何辦呢?


2、修改測試方法

var a Integer = 1

var la LessAdder =?&a ? // 與上面不同這里把變量a的地址賦給LessAdder

fmt.Println("la = ", la)

再運行發現正常了,這是為什么?許式偉這樣解釋:

Go語言可以根據下面的函數:

func (a Integer) Less (b Integer) bool

自動生成一個新的Less()方法:

func (a *Integer) Less(b Integer) bool{

? ? ? ?return (*a).Less(b)

}

這樣,類型*Integer就既存在Less()方法,也存在Add()方法,滿足LessAdder接口。


而從另一方面來說,根據

func (a *Integer) Add(b Integer)

這個函數無法自動生成以下這個成員方法:

func (a Integer) Add(b Integer){

? ? ? ?(&a).Add(b)

}

因此類型Integer只存在Less()方法,缺少Add()方法,不滿足






LessAdder接口。


因為(&a).Add()改變的只是函數參數a,對外部實際要操作的對象并無影響,這不符合用戶的預期,所以Go語言不會自動為其生成該函數。因此類型Integer只存在Less()方法,缺少Add()方法,不滿足LessAdder接口。

如果感覺還是不得其意,建議把上面這段話讀個五、六遍......

(其實我是站在內存的角度上來理解的,有興趣的讀者可以嘗試用這個角度來解釋,當然也可以私信交流)


四、Go語言的是是非非

世界向來就是具有兩面性的,有贊的當然有批的;

我不是Go語言的專家,沒有資格來參與到Go語言的是是非非之中,但感興趣的讀者可以閱讀一下鏈接《http://www.ituring.com.cn/article/37642》,觀看別人爭吵也是學習的一種手段。

附件:http://down.51cto.com/data/2365983




? ? ?本文轉自qingkechina 51CTO博客,原文鏈接:http://blog.51cto.com/qingkechina/1681419,如需轉載請自行聯系原作者


總結

以上是生活随笔為你收集整理的【Go语言】【17】GO语言杂谈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产免费一区二区 | 综合色av| 国产另类av| 欧美日韩一区二区三区国产精品成人 | 久久爰 | 91丨porny丨| 综合网伊人 | 奶罩不戴乳罩邻居hd播放 | 美女三区 | www免费黄色| 99久久久无码国产精品性波多 | 色爱综合网 | 亚洲AV无码成人片在线观看 | 97超碰成人 | 成年人拍拍视频 | 久久久夜夜 | 国产成人综合自拍 | 国产91在线亚洲 | jvid在线| 老司机一区 | 亚洲综合在线五月 | av在线浏览 | 3d毛片 | 国产激情一区二区三区视频免樱桃 | 玩偶游戏在线观看免费 | 国产剧情一区二区三区 | 五月综合在线 | 日批视频在线 | 超碰牛牛 | 就是色| 成人免费看毛片 | 你懂的网站在线观看 | 国产免费a | 日韩在线观看免费 | av国产精品 | 免费成人深夜夜 | 欧美精品成人一区二区在线观看 | 中文字幕日韩欧美一区二区 | 99re中文字幕| 69中国xxxxxxxxx69 国产又爽又色 | 久草福利资源站 | 永久看看免费大片 | 久久久久久久久久久网站 | 91福利免费 | 希岛婚前侵犯中文字幕在线 | 91国产网站 | 成人午夜免费福利 | 91精产国品 | 成人午夜精品福利免费 | 巨乳女教师的诱惑 | 黄频在线免费观看 | 精品久久久久久亚洲综合网站 | 欧美性极品xxxx做受 | 羞羞涩涩视频 | 免费av软件| 色漫 | 国产高潮在线观看 | 激情综合网五月激情 | 欧美黄色影院 | 一二区免费视频 | 日本一区二区三区在线看 | 神秘马戏团在线观看免费高清中文 | 善良的少妇伦理bd中字 | 欧美一区二区三区在线播放 | 夜夜夜夜夜操 | 神马久久久久久久久久 | 黄色天天影视 | 俄罗斯嫩小性bbwbbw | 欧美一级片一区二区 | 超碰p | 亚洲成a人无码 | 欧美在线小视频 | 污污网站在线看 | 久久久久久影院 | 亚洲AV无码乱码国产精品色欲 | 法国空姐在线观看免费 | 亚洲色图 在线视频 | 国产麻豆剧传媒精品国产 | 男人av影院 | αv在线 | 最近中文字幕免费mv视频7 | 黄色特级大片 | xxx国产 | 动漫美女被吸乳奶动漫视频 | 撸大师av | 国产人妻一区二区 | 伊人久久亚洲综合 | 久久精品天堂 | 久久日韩| 搡老熟女老女人一区二区 | av首页在线| 老女人做爰全过程免费的视频 | 日韩亚洲区 | 强行挺进皇后紧窄湿润小说 | 欧美猛交xxx | 欧美日韩国产大片 | 中文字幕亚洲视频 | www亚洲视频 | 亚洲一区二区色 |