go語(yǔ)言web框架beego安裝(go mod方式)_不忘初心,方得始終-CSDN博客

成都創(chuàng)新互聯(lián)主要從事做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)和龍,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220
重要:將bee命令放到GOROOT/bin目錄下,這步很關(guān)鍵
cp bee /usr/local/go/bin/
注:或者可以將GOPATH/bin設(shè)置為環(huán)境變量
echo ’export PATH=" PATH"' ~/.bashrc
source ~/.bashrc
router路由下方法名要大寫,訪問(wèn)權(quán)限
wq保存
生效環(huán)境變量: source /etc/profile
go build -o abc.exe可指定編譯后的文件名
Golang常用環(huán)境變量說(shuō)明與設(shè)置詳解
環(huán)境變量GOBIN表示我們開(kāi)發(fā)程序編譯后二進(jìn)制命令的安裝目錄。
當(dāng)我們使用go install命令編譯和打包應(yīng)用程序時(shí),該命令會(huì)將編譯后二進(jìn)制程序打包GOBIN目錄,一般我們將GOBIN設(shè)置為GOPATH/bin目錄。
export GOBIN=$GOPATH/bin
Go get包管理mod
windows下默認(rèn)項(xiàng)目路徑在go安裝目錄的src下(beego)
一直直接操作的框架 使用vscode 打開(kāi)就會(huì)自動(dòng)裝包,這次想寫一個(gè)簡(jiǎn)單應(yīng)用,確不會(huì)怎么建項(xiàng)目,記錄如下。
go1.14 后,以及不再需要把項(xiàng)目寫在GOPATH下,所有不需要再配置。
配置GOPRXY goenv-w GOPROXY=(國(guó)內(nèi)無(wú)法訪問(wèn))
使用go mod方法新建項(xiàng)目。
任意位置新建文件夾。
文件夾下執(zhí)行g(shù)o mod xxx ,生成一個(gè)go.mod文件。
新建一個(gè)main.go文件,就可以直接運(yùn)行了。
我開(kāi)始的時(shí)候,先建了main.go文件,再執(zhí)行的go.mod。后面沒(méi)法運(yùn)行。
參考:李文周的博客。
Go 由于不支持泛型而臭名昭著,但最近,泛型已接近成為現(xiàn)實(shí)。Go 團(tuán)隊(duì)實(shí)施了一個(gè)看起來(lái)比較穩(wěn)定的設(shè)計(jì)草案,并且正以源到源翻譯器原型的形式獲得關(guān)注。本文講述的是泛型的最新設(shè)計(jì),以及如何自己嘗試泛型。
例子
FIFO Stack
假設(shè)你要?jiǎng)?chuàng)建一個(gè)先進(jìn)先出堆棧。沒(méi)有泛型,你可能會(huì)這樣實(shí)現(xiàn):
type?Stack?[]interface{}func?(s?Stack)?Peek()?interface{}?{
return?s[len(s)-1]
}
func?(s?*Stack)?Pop()?{
*s?=?(*s)[:
len(*s)-1]
}
func?(s?*Stack)?Push(value?interface{})?{
*s?=?
append(*s,?value)
}
但是,這里存在一個(gè)問(wèn)題:每當(dāng)你 Peek 項(xiàng)時(shí),都必須使用類型斷言將其從 interface{} 轉(zhuǎn)換為你需要的類型。如果你的堆棧是 *MyObject 的堆棧,則意味著很多 s.Peek().(*MyObject)這樣的代碼。這不僅讓人眼花繚亂,而且還可能引發(fā)錯(cuò)誤。比如忘記 * 怎么辦?或者如果您輸入錯(cuò)誤的類型怎么辦?s.Push(MyObject{})` 可以順利編譯,而且你可能不會(huì)發(fā)現(xiàn)到自己的錯(cuò)誤,直到它影響到你的整個(gè)服務(wù)為止。
通常,使用 interface{} 是相對(duì)危險(xiǎn)的。使用更多受限制的類型總是更安全,因?yàn)榭梢栽诰幾g時(shí)而不是運(yùn)行時(shí)發(fā)現(xiàn)問(wèn)題。
泛型通過(guò)允許類型具有類型參數(shù)來(lái)解決此問(wèn)題:
type?Stack(type?T)?[]Tfunc?(s?Stack(T))?Peek()?T?{
return?s[len(s)-1]
}
func?(s?*Stack(T))?Pop()?{
*s?=?(*s)[:
len(*s)-1]
}
func?(s?*Stack(T))?Push(value?T)?{
*s?=?
append(*s,?value)
}
這會(huì)向 Stack 添加一個(gè)類型參數(shù),從而完全不需要 interface{}。現(xiàn)在,當(dāng)你使用 Peek() 時(shí),返回的值已經(jīng)是原始類型,并且沒(méi)有機(jī)會(huì)返回錯(cuò)誤的值類型。這種方式更安全,更容易使用。(譯注:就是看起來(lái)更丑陋,^-^)
此外,泛型代碼通常更易于編譯器優(yōu)化,從而獲得更好的性能(以二進(jìn)制大小為代價(jià))。如果我們對(duì)上面的非泛型代碼和泛型代碼進(jìn)行基準(zhǔn)測(cè)試,我們可以看到區(qū)別:
type?MyObject?struct?{
X?
int
}
var?sink?MyObjectfunc?BenchmarkGo1(b?*testing.B)?{
for?i?:=?0;?i??b.N;?i++?{
var?s?Stack
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink?=?s.Peek().(MyObject)
}
}
func?BenchmarkGo2(b?*testing.B)?{
for?i?:=?0;?i??b.N;?i++?{
var?s?Stack(MyObject)
s.Push(MyObject{})
s.Push(MyObject{})
s.Pop()
sink?=?s.Peek()
}
}
結(jié)果:
BenchmarkGo1BenchmarkGo1-16?????12837528?????????87.0?ns/op???????48?B/op????????2?allocs/opBenchmarkGo2BenchmarkGo2-16?????28406479?????????41.9?ns/op???????24?B/op????????2?allocs/op
在這種情況下,我們分配更少的內(nèi)存,同時(shí)泛型的速度是非泛型的兩倍。
合約(Contracts)
上面的堆棧示例適用于任何類型。但是,在許多情況下,你需要編寫僅適用于具有某些特征的類型的代碼。例如,你可能希望堆棧要求類型實(shí)現(xiàn) String() 函數(shù)
現(xiàn)在個(gè)人博客通常有比較多的選擇,如果不想要自己購(gòu)買服務(wù)器實(shí)現(xiàn)靜態(tài)博客的發(fā)布,可以在、CSDN等平臺(tái)建立自己的賬號(hào)并發(fā)布,但是原始數(shù)據(jù)無(wú)法在本地管理;如果想要數(shù)據(jù)完全自己管理,可以使用GitHub或者Gitee Pages功能發(fā)布自己的博客,利用Hugo或Hexo等成熟的靜態(tài)博客將md文件轉(zhuǎn)換成靜態(tài)網(wǎng)站文件進(jìn)行快速發(fā)布。本文就用來(lái)記錄如何快速將博客發(fā)布到、GitHub以及Gitee Pages三個(gè)平臺(tái)。
我希望的流程當(dāng)然是主要精力用在寫文章,發(fā)布的流程最好完全不需要手動(dòng)處理,但實(shí)際情況下手動(dòng)發(fā)布博客的流程大體是:
之前有使用過(guò)Travis CI+GitHub+Hexo自動(dòng)發(fā)布到GitHub Pages,但是GitHub的訪問(wèn)經(jīng)常不那么靠譜,因此想著也能同步到Gitee,并且自動(dòng)構(gòu)建Hexo的速度受Nodejs環(huán)境部署影響,速度很慢,因此本次計(jì)劃采用Hugo來(lái)構(gòu)建網(wǎng)站文件,整體流程設(shè)計(jì)如下:
為了滿足博客自動(dòng)發(fā)布流程,首先需要在本地準(zhǔn)備好生產(chǎn)環(huán)境,以滿足快速發(fā)布,以此的復(fù)雜是為了長(zhǎng)期的簡(jiǎn)單,因此在環(huán)境準(zhǔn)備階段我會(huì)把所有涉及的工具都記錄下來(lái),以方便大家使用以及后邊自己回顧,環(huán)境準(zhǔn)備包含:
Obsidian完成知識(shí)積累后,按照Z(yǔ)K-Project-Archive-Blog的流程發(fā)布Blog,但是Obsidian的文件相互關(guān)聯(lián),且附件如何快速?gòu)?fù)用,需要對(duì)Typora和Obsidian都進(jìn)行簡(jiǎn)單的配置,確保后續(xù)Blog能夠快速完成并發(fā)布,并且文件仍在Obsidian工程中正常顯示;
Typora非常的簡(jiǎn)潔,而且可以實(shí)時(shí)預(yù)覽,在寫博客的時(shí)候經(jīng)常會(huì)插入一些圖片,截圖后可以直接粘貼進(jìn)去,圖片也會(huì)自動(dòng)保存在本地,這里需要注意圖片的保存路徑,在偏好設(shè)置里,設(shè)置插入圖片時(shí)復(fù)制到指定路徑(./resource/),這樣復(fù)制的圖片就會(huì)自動(dòng)保存在當(dāng)前文件夾下的resource文件夾里,方便后續(xù)管理與轉(zhuǎn)移。
在.ssh文件生成id_rsa和id_rsa.pub兩個(gè)文件;
Hugo 是一個(gè)基于Go語(yǔ)言開(kāi)發(fā)的靜態(tài)博客框架,號(hào)稱世界上最快的構(gòu)建網(wǎng)站工具;
命令為: hugo new site myblog
myblog為博客的目錄名,可以修改為你自己想取的名字,生成的目錄如下:
由于默認(rèn)主題生成的文章頁(yè)面有些功能是不需要的,因此需要對(duì)themes下文件進(jìn)行修改:
將config、content和themes三個(gè)目錄拷貝到新創(chuàng)建的站點(diǎn)目錄,將content下替換為文章文件即可。
utterances 是一款基于Github Issue的Github工具,優(yōu)點(diǎn)主要是無(wú)廣告、加載快、配置簡(jiǎn)單,輕量開(kāi)源。
由于 utterances 是一款Github App,因此 安裝utterances 非常簡(jiǎn)單,只需要授權(quán)特定repo權(quán)限給 utterances 就可以了,注意一個(gè)點(diǎn):授權(quán)的這個(gè)repo必須是public的,可以選擇多個(gè)repo,但是建議選擇一個(gè)就可以了,也比較安全。
這是當(dāng)前最簡(jiǎn)單的配置方法, 也可以在 utterances官方 查看其他配置方法,以及詳細(xì)的配置參數(shù)說(shuō)明。
Obsidian的安裝和使用可參考我的另一篇文章: Obsidian作為第二大腦工具的基本使用和配置
所有環(huán)境準(zhǔn)備好后,終于要開(kāi)始啟動(dòng)我們的自動(dòng)化流程的實(shí)現(xiàn)了;
同之前步驟相同,將Gitee密碼配置到GitHub Secrets,命名為:GITEE_PASSWORD,所有配置結(jié)果如下:
synctogitee.yml
需要綁定Gitee賬號(hào)到微信公眾號(hào),否則最后一步reload pages自動(dòng)部署Gitee Pages會(huì)登錄失敗,原因是需要短信驗(yàn)證;綁定公眾號(hào)后則不需要短信驗(yàn)證;其他問(wèn)題解決可以參考 gitee-pages-action
在Typora完成文章編寫后,一鍵上傳所有圖片到Gitee圖床,拷貝發(fā)布到,然后提交到GitHub repo master分支,即可自動(dòng)部署到GitHub和Gitee Pages;
以上就是我利用GitHub-Actions將Hugo博客自動(dòng)發(fā)布到GitHub和Gitee Pages,希望可以幫助大家快速構(gòu)建自己的個(gè)人網(wǎng)站;后邊我會(huì)繼續(xù)完善我的第二大腦系統(tǒng)的構(gòu)建思路和方法。
網(wǎng)頁(yè)題目:go語(yǔ)言博客,go語(yǔ)言開(kāi)發(fā)博客
網(wǎng)站地址:http://chinadenli.net/article1/dsiogid.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、App設(shè)計(jì)、自適應(yīng)網(wǎng)站、服務(wù)器托管、虛擬主機(jī)、網(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)