不知不覺,距離golang已經發布了10年了,勞資預言golang將來必定會是一等一很是好,很是棒的語言,不要問爲何,我就是這樣以爲。微軟2003年發佈.net(目前好像也比較「」叼「的樣子,注意「」叼」字加了雙引號),蘋果2007年發佈Object C(後來變爲Switch,勞資也不懂),Google做爲世界上一等一的科技公司(至於百度不說了)php
,確定也要有本身的語言,因而golang 2009發佈了,將來碾壓.net,腳踢switch天然不在話下(這裏不討論語言好壞,其實能賺錢的技術好語言)。因此學習golang是很值得的。java
能夠參考文章:node
但本教程不是教你學golang基礎知識,而是講解golang web框架gin,因此go環境自行安裝,go基礎請自行惡補。本課程以「程序員在囧途在線教育「課程+github爲參考+本身的一點嘮叨python
學習gin需具有:git
一、已經瞭解go語法基礎(go 1.11+).瞭解Linux、docker(基本操做)
二、對其餘語言有過簡單的web代碼編寫基礎
三、對數據庫、redis 等 有所基礎瞭解,能自行搭建環境程序員
git github地址
https://github.com/gin-gonic/gingithub
廢話很少說,下面開始咱們看教程:golang
1、建立項目,分幾步web
一、隨便建立一個文件夾(不要有中文、空格和奇怪的字符串,沒有爲何)
二、在 api.jeng.com下建立topic ,表明 話題相關API(其實起什麼名字都無所謂)
三、cd進入topic執行: go mod init topic.jeng.com (mod爲go包管理工具,php有composer,node有npm,java有maven,python有pip,我們go也不能差吧)
四、在當前(topic目錄)目錄cmd(終端)下執行
go get github.com/gin-gonic/gin(gin會自動安裝在你的gopath目錄下的xxxxxx/pkg/mod/github.com/下)
五、用goland 打開topic目錄(goland採用2018.3以上版本,不然不支持mod索引啥的)
六、設置goland(Fiel->setting->Go:[一、GOROOT必須大於1.11版本,二、Go Modules勾選Enable Go Modules])redis
項目目錄文件以下:
2、開始寫代碼
在topic項目目錄建立main.go文件
根據github的案例教程無腦輸入一下內容
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() //建立默認路由,其實就是一個handler
//添加路由,不用爲何是 /ping(你能夠能夠設置爲/user, /login),勞資複製GitHub官方的案例,保持原汁原味,因此多看官方文檔 r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) })
//默認開啓8080,若是須要開啓其餘的,能夠設置r.Run(9090) r.Run() // listen and serve on 0.0.0.0:8080 }
執行goland菜單欄的run,項目運行後,使用chrome瀏覽器訪問
http://localhost:8080/ping
便可看到輸出內容 {"message":"pong"} #擦,原來gin的做者喜歡打乒乓
完了,gin就是這麼簡單,簡單得「讓人髮指」
如下改裝下代碼:
其實代碼也能夠這樣寫:
package main import "github.com/gin-gonic/gin" type Topic struct{ TopicID int TopicTitle string } func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200,&Topic{101, "這是title"}) //傳結構體 }) r.Run() // listen and serve on 0.0.0.0:8080 }
輸出 {"TopicID":101,"TopicTitle":"這是title"}
或者這樣寫:
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { m:=make(map[string]string) m["topicid"]="102" m["topictitle"]="title--102" c.JSON(200,m) //給map類型 }) r.Run() // listen and serve on 0.0.0.0:8080 }
若是你想輸出字符串,能夠這樣寫
r.GET("/", func(c *gin.Context) {
c.Writer.Write([]byte("firewdddeb"))
})
先講這麼些內容,不得不說gin真的很是好,很是棒,套用gin的話
Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.