go語言iris框架教程 go cli框架

怎樣學(xué)習(xí)GO語言?

golang學(xué)習(xí)比較簡單,不過任何一門語言都不是孤立存在的,在這里簡要說明一下golang開發(fā)的學(xué)習(xí)路線

順河ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

1.golang基礎(chǔ),包括go語言安裝,go語言語法,流程控制語句,函數(shù),方法,面向?qū)ο蟾拍?,網(wǎng)絡(luò)編程,并發(fā)編程等

2.golang開發(fā)框架,包括beego,gin,Iris,Echo等

3.微服務(wù)開發(fā)

4.深入的話還可以學(xué)習(xí)算法部分。如果要接觸區(qū)塊鏈相關(guān)技術(shù)的話,還需要學(xué)習(xí)區(qū)塊鏈的加密算法等相關(guān)知識

5.如果要結(jié)合go實現(xiàn)應(yīng)用的話,肯定離不開各種數(shù)據(jù)庫,比如關(guān)系型數(shù)據(jù)庫oracle、mysql,或者各類非關(guān)系型數(shù)據(jù)庫等等

6.如果需要開發(fā)界面的話,還需要學(xué)習(xí)網(wǎng)頁編程如html,javascript,vue,elementUI,bootstrap等網(wǎng)頁開發(fā)技術(shù)和框架。

7.在以上學(xué)習(xí)的基礎(chǔ)上還可以向架構(gòu)方面深入學(xué)習(xí)。

鏈喬教育在線祝您學(xué)有所成。

golang的iris框架的模版如何相互引用?

1.用{{}}包圍的是變量,如 {{testName}} ,這表示把給定變量的值插入, {%%}這是塊元素 在faygo里叫tag,常見的有 for , if 等

2.如何在模板中定義變量, 平常我們在使用的模板的時候的常會有這樣的需要,在模板中要定義一個變量以方便前端邏輯的實現(xiàn),在faygo模板中定義變量需要用到標(biāo)簽{%set%}

使用方法

{#定義變量 newName #}

{% set newName = "hello faygo" %}

{#獲取變量newName的值#}

{{newName}}

定義用 tag set 取值就是上文所提到的{{}}取值

3.在模板中調(diào)用方法

這也是一個非常常見和有用的方法,在faygo中調(diào)用方法有兩種方式 , 一是在渲染模板時在faygo.Map在加入你要調(diào)用的方法 , 二是注冊一個全局的方法 (在faygo里叫filter過濾器),我們分別來看一下每個方法的實現(xiàn)

1) 在渲染模板時加入方法(render)

//在后端render時加入方法 testFunc

rErr := ctx.Render(200, switchDir+"index.html", faygo.Map{

"TITLE": title,

"testMap": map[string]string{"aaa": "111111"},

"testFunc": func(s string) string {

return s + " this is test func"

},

})

{#前端模板中調(diào)用#}

{{ testFunc("hello") }}

結(jié)果如下

hello this is test func

這種方法適合只用于此模板一個特殊方法 , 在其它功能中不通用 ,那么如果想定義一個方法全局都可以使用怎么辦,這里就需要注冊全局方法了(見下文)

2)注冊全局方法(過濾器)

如果想定義一個方法全局都可以使用怎么辦 ,這里就需要注冊一個方法

// pongo2 注冊一個全局過濾器,一般在程序啟動時init中注冊

//這里注冊了一個名叫testFilter的過濾器,指向TestFilterFunc方法

pongo2.RegisterFilter("testFilter", TestFilterFunc)

func TestFilterFunc(in, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) {

a := in.String() + " this is global filter"

return pongo2.AsValue(a), nil

}

在這里我們看到TestFilterFunc方法里接收參數(shù)和返回參數(shù)的類型是pongo2.Value和pongo2.Error

在注冊過濾器里方法的接收參數(shù)和返回參數(shù)是固定的這兩個不能改變

官網(wǎng)的話:

All functions’ parameters types must be of either your own type or of type *pongo2.Value(no matter how many) and functions must return one value of either type *Value or your own one.

那么我們返回數(shù)據(jù)時怎么返回? 在上面例子在我們看到了 AsValue 這個方法可以將我們數(shù)據(jù)返回,我們可以返回struct,map,array,string 等

在前端調(diào)用

{{ "hello" | testFilter }}

結(jié)果:

hello this is global filter

返回結(jié)構(gòu)體:

type LoginUserInfo struct {

Username string `json:"username"`

Telephone string `json:"telephone"`

Email string `json:"email"`

Level int `json:"level"`

}

func TestFilterFunc(in, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) {

userInfo := LoginUserInfo{

Username: "userA",

Telephone: "123456",

Email: "123456@test點抗 ",

Level: 1,

}

return pongo2.AsValue(userInfo), nil

}

前端使用:

{#定義一個變量接收struct數(shù)據(jù) #}

{% set uinfo = "" | testFilter %}

{#取用戶名字#}

{{ uinfo.Username }}

注意,如是 uinfo 只是一個struct 不是struct數(shù)組([]uinfo)時 在模板中不能使用{% for %} 使用也不會得到任何數(shù)據(jù)

如果uinfo是struct數(shù)組 在模板中for循環(huán)時不要使用 key,val in uinfo

如果uinfo是struct數(shù)組 uinfo = []userInfo{}

{#錯誤示例#}

{% for key,val in uinfo %}

{{val.Username}}

{% endfor %}

struct數(shù)據(jù)不能使用key,否則循環(huán)會執(zhí)行,但取不到任何數(shù)據(jù)

{# 正確示例 #}

{% for val in uinfo %}

{{val.Username}}

{% endfor %}

說一下返回map時 用for循環(huán)的情況,無論是否是map數(shù)組都可以用for key,val in uinfo 來遍歷數(shù)據(jù)

4. 在模板中字符串的連接和宏標(biāo)簽的使用

在模板中有時我們會碰到這樣的需要:在模板中有幾個變量 ,我們想把這幾個變量連接在一起賦值給另一個變量以做其它操作

例: 在模板中有三個變量 host是域名,route是路由地址,param是參數(shù) ,要把這三個變量連接起來賦值給另一個新的變量做urlencode操作。這應(yīng)該怎么辦

因為在模板中使用 + 號連接變量時,程序會認(rèn)為是數(shù)學(xué)運(yùn)算,兩個字符串的連接值為0, 如果用內(nèi)置的filter: join來連接需要傳入一個slice,但這三個只是字符串變量。

這個時候我們可能就要用到宏標(biāo)簽了% macro %% endmacro %.

思路是這樣的,在宏標(biāo)簽中定義一個宏(可以理解為一個方法),這個宏接收三個參數(shù)(參數(shù)個數(shù)看需求而定),在宏內(nèi)返回連接的字符串

代碼:

{#定義三個變量#}

{% set host="" %}

{% set route="/aaa/bbb" %}

{% set param= "?id=123" %}

{#定義一個宏標(biāo)簽接收三個參數(shù),并返回。注意在宏標(biāo)簽內(nèi)如果換行,輸出的結(jié)果中也會有換行,在urlencode的時候也會把換行符進(jìn)行轉(zhuǎn)義#}

{% macro joinUrl(paramA,paramB,paramC) %}{{paramA}}{{paramB}}{{paramC}}{% endmacro %}

hr

{#定義一個新變量調(diào)用宏方法,并將三個參數(shù)傳入#}

{% set newurl = joinUrl(host,route,param) %}

{#輸出newurl的值#}

{{newurl}}br

{#輸入出urlencode后的字符串#}

{{newurl|urlencode}}br

結(jié)果:

http%3A%2F%2F

在宏標(biāo)簽在也可加入自定義的一些字符串如在上面的宏標(biāo)簽返回結(jié)果中要加一個固定字符可以這樣寫:

{% macro joinUrl(paramA,paramB,paramC) %}{{paramA}}{{paramB}}{{paramC}}from=macro{% endmacro %}

Go語言做Web應(yīng)用開發(fā)的框架,哪一個更適合入門

Revel Web開源框架

個高效的Go語言Web開發(fā)框架,?其思路完全來自 Java 的?Play Framework。

特點

熱編譯,簡單可選,同步(每個請求都創(chuàng)建自己的goroutine來處理。

Go語言Web框架:beego

一個用Go開發(fā)的應(yīng)用框架,思路來自于tornado,路由設(shè)計來源于sinatra。

支持特性

MVC;

REST;

智能路由;

日志調(diào)試;

配置管理;

模板自動渲染;

layout設(shè)計;

中間件插入邏輯;

方便的JSON/XML服務(wù);

文章名稱:go語言iris框架教程 go cli框架
轉(zhuǎn)載來源:http://muchs.cn/article20/ddiegjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、云服務(wù)器網(wǎng)頁設(shè)計公司、企業(yè)網(wǎng)站制作品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)