Go My Way #1 - web 框架

Go My Way #1 - web 框架 Jun 12, 2017 Ruby的Ruby on Rails,Java的Spring,Python的Django,Nodejs的Express。多数有人气的语言都有主流的web框架。所以不需要多想使用主流框架就可以以,但是Go没有这些。Go提倡根据情况合理的组合package。熟练了以后非常方便,但对于第一次接触Go的人选择package是困难的事情。 接触Go已有3年,过去1年中积极使用了Go语言。起初公司内只有自己使用Go,现在使用Go开发的同事多了起来。我们公司在中国提供it服务,目前阿里云里运营着5个linux服务器和2个windows服务器。共有50左右的服务,其中用Go开发的服务占10个左右。 就这样使用Go语言开发,有了自己的开发方式。我想通过3偏文章介绍Go语言开发。(太冗长,读者没有耐心读完,自己觉得也麻烦,呵呵) Go My Way #1 - web框架 Go My Way #2 - 数据库, 日志 Go My Way #3 - Configuration, Tracing, etc. gomobile 第一个主题是web框架。我觉得对这部分关注的人比较多,所以选择了它。 但是开发web应用程序,只有web框架是不够的。保存数据需要数据库,想保存日志,想追溯处理web请求的记录。想一一解决各种问题,需要更多的选择。所以在第2章和第3章对 DB, Logging, Tracing, Vendoring, Confugration, Test等功能一一介绍。 最后会对, gomobile 进行介绍。 在几个大会当中有对它的介绍,但实际用Go开发移动端有诸多不便。但我们公司的服务的app中有Go package。gomobile有制约事项,但考虑好制约事项开发项目也不错。最后会介绍在移动端怎么使用Go。 此后会用3个篇幅介绍开发web应用程序的方法。没有绝对正确的方式,Go也不提倡这种方式。我将介绍我们公司业务环境下对web应用程序的优化方式,环境不一样可能方式也不一样。在我们公司也有用其他方式开发项目。 对所介绍的内容的讨论,建议,争论,质疑,等 我将感谢任何形式的意见。 我的思想是永远开放的. ^^ ECHO 先讲结论,开发web应用程序时用echo来开发。 根据之前所说的内容开发了参考项目echosample(https://github.com/pangpanglabs/echosample)。有新的内容添加时会持续更新 echosample。开发新的服务时可以参考echosample。 非常欢迎想一起开发echosample的同事。 main 框架 - echo echo是没有明显缺点,只有必要的功能的轻量级框架。 Go有许多web框架,但功能大同小异。大部分会提供一下的功能。 定义路由 Query String或者Body转换成 struct.

Go项目中编写测试代码的经验

http://sabzil.org/writing-a-unit-test/ http://10.202.101.25:8090/pages/viewpage.action?pageId=12551088 备注:以下内容是我在学习过程所整理的内容,所以有些内容有可能不是正确。 为什么写测试代码? 我们做项目写代码的时候,已知会有这样的疑惑和担忧。 “我写的正确吗?” “我这么编写其他地方不会受到影响吗?” 我们之所有这样的担忧,我认为应该是一下2种原因导致的。 第一,编写代码以后,很难构建针对开发内容发出请求和响应请求的模块。 第二,编程的时候会忘记之前的定好的原则,违反这些原则有可能会有一些错误。 根据”测试驱动开发 TDD 实践和工具” 和 几篇博客文章以及几本书,再写测试代码的感觉能找出问题的原因。 所以我决定在进行中的项目里适用测试代码。 测试代码? 写测试代码需要注意以下几点。 1. 通过 “提问 → 回答 → 优化 → 反复” 的过程,反复的编写测试代码,失败,再整理。 2. 测试的最小单位是函数,可以以函数为单位编写测试代码。 3. 设计的时候先定义行为然后在考虑行为的属性。 怎么写测试代码? Go 语言里的测试代码可以根据官方提供的 “testing” 包编写。 可以使用第三方工具更便捷的编写测试代码。 1. testify ( go get -u github.com/stretchr/testify ) 2. goconvey ( go get -u github.com/smartystreets/goconvey ) testify提供和 assert, http, mock, require, suite 一样的的包,更方便的让我们做检验。goconvey是更方便的让我们在网页里确认测试结果的工具。 goconvey是我们运行 goconvey会展示以下内容,让我们一眼能看出测试结果。 scr 1 我们可以通过 coverage 确认以下内容。 scr 2