golang web 開發調研

來源:互聯網
上載者:User

  go語言現在已經發展的相對成熟了。網上有很多資料,本文不重複介紹安裝、配置、運行、文法相關知識了,因為這些沒有比官網更清楚方便的了。

  這裡只單拎一下go語言與其他語言不太一樣的地方,協助大家快速避坑和轉換思維。

  • 入門參考文檔:
    • https://github.com/Unknwon/go-web-foundation
    • https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/preface.md
    • https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md
  • 基礎配置
    • 環境變數
      • source ~/.bash.profile 配置環境變數
      • go env 查看環境變數
  • 安裝配置
    • GOROOT
    • GOPATH
    • 同一個包中的函數不可重名
    • package包名可以和檔案夾不同名,import時用檔案夾名,引用時用包名
  • go get -u github.com/xxx/xxx 擷取外部參考
  • 依賴管理
    • godep 最早
    • dep 官方項目,剛起步
    • glide 新,功能全 https://segmentfault.com/a/1190000013016957
      • 亂碼: 先在cmd裡面執行chcp 65001
      • glide在windows上的許可權bug: https://studygolang.com/topics/4905
    • govendor 新,功能全
      • govendor init
      • govendor fetch github.com/xxx
      • sync
  • web開發
    • web架構:
      • gin 效率高;
      • beego 國內項目、star多,太龐大
    • orm架構:
      • xorm 國內項目、文檔全、響應快;
      • gorm 文檔少、star多;
  • 需要瞭解的文法約定
    • 首字母大小寫區分可見度:大寫字母開頭的函數、變數等預設是public,否則是private
    • iota 枚舉類型
    • defer 來釋放資源,提高代碼可讀性
    • goroutine 天然支援並發編程
  • 資料庫開發樣本
package daoimport (    "github.com/go-xorm/xorm"    "fmt")type UserInfo struct {    UserId     string `xorm:"userId varchar(60)"`    Username string `xorm:"username varchar(60)"`}func GetWeixinConfig() {    var engine *xorm.Engine    var err error    engine, err = xorm.NewEngine("mysql", "username:password@tcp(host:port)/user_db")    if err != nil {        fmt.Println(err)    }    err1 := engine.Ping()    if err1 != nil {        fmt.Println(err1)    }    engine.ShowSQL(true)    var users []UserInfo    err2 := engine.Table("user_db").Select("userId, username").        Find(&users)    if err2 != nil {        fmt.Println(err)    }    fmt.Println(len(users))}
  •  gin web開發樣本
package mainimport (    "github.com/gin-gonic/gin"    "awesome-go/src/dao"    "os"    "io")func main() {    //輸出日誌到檔案    gin.DisableConsoleColor()    logFile, _ := os.Create("log")    gin.DefaultWriter = io.MultiWriter(logFile)    router := gin.Default()    router.GET("/get", func(c *gin.Context) {        c.JSON(200, gin.H{            "message": "OK",        })    })        router.Run() // listen and serve on 0.0.0.0:8080}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.