利用Go语言初步搭建一个web应用的教程

2020-01-28 11:39:45王振洲

        &(commodity.InsertDatetime), &(commodity.UpdateDatetime))
        if err != nil {
          pillarsLog.PillarsLogger.Print(err.Error())
          return nil, err
        }
      }
      return &commodity, err

7.2 Mongodb

    err :=  mongoUtility.PictureCollection.Find(bson.M{"picturecode":*pictureCode}).One(&picture)

这里只给出最简单的例子。具体的看mgo的开发文档就ok。还是比较简单的。
8.单元测试注意事项

    测试命令 go test -v (没有其他参数了!!!) 如果不带-v只显示结果,不显示调试过程,主要是调试开发的时候用
    文件格式 xxx_test.go 但是建议改成 xxx_test0.go 或者喜欢改成别的也可以。
        由于测试先行的原则,在开发的时候一次测试也就一两个函数。
        这样相当于把其他测试注释掉
    测试的时候的配置文件要放到测试目录下面。别忘了。
    心态,错误太多一个一个来,要有个好心态。

9.LOG

注意在调试中Log的不可缺失性。

下面api如果不知道从何而来直接doc搜索就可以了。

    package utility
    import "log"
    import "os"
    import "fmt"
    // Logger Model min variable.
    var Logger *log.Logger
    var outFile *os.File
    // init function if Logger if not inited will invoke this function
    func init() {
      if Logger == nil {
        propertyMap := ReadProperty("pic.properties")
        logFileName := propertyMap["LogFile"]
        fmt.Println("Initial and Open log file ", logFileName)
        var err error
        outFile, err = os.OpenFile(logFileName, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666)
        if err != nil {
          panic(err.Error())
        }
        Logger = log.New(outFile, "", log.Ldate|log.Ltime|log.Llongfile)
      }
    }
    // CloseLogFile function : close Logger invoke file.