GO WEB编程
google最新的开发技术,go语言,借鉴了多种语言的特点。能够让你通过该语言建立web端的应用Copyright (c) 2012, AstaXie and The Contributors All rights reservedRedistribution and use in source and binary forms, with or without modification, are permittedprovided that the following conditions are met:Redistributions of source code must retain the above copyright notice, this list of conditionsand the following disclaimerRedistributions in binary form must reproduce the above copyright notice, this list ofconditions and the following disclaimer in the documentation and/or other materials providedwith the distributionNeither the name of the AstaXie nor the names of its contributors may be used to endorse orpromote products derived from this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORSAS IS AND ANY EXPRESS OR IMPLIEDWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR APARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLEFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO. PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES: LOSS OF USE. DATA. OR PROFITS: OR BUS INESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY. WHETHER IN CONTRACT. STRICT LIABILITY. ORTORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IFADVISED OF THE POSSIBILITY OF SUCH DAMAGE1.GQ环境配置1.1.Go安装◇1.2. GOPATH与工作空间1.3.Go命令◇1.4.Go开发工具1.5.小结·2.Go语言基础2.1.你好,G◇2.2.Go基础2.3.流程和函数◇2.4. struct2.5.面向对象2.6. interface2.7.并发)2.8.小结eb基础3.1置eb工作方式3.2G搭建一个简单的web服条3.3G如何使得web「作034G的httn包详艉◇3.5小结4.表单◇4.1处理表单的输入o4.2验证表单的输入◇4.3缅防跨站脚本44防止多次递交表单◇4.5处理文件上传4.6小结·5.访问数据库接口◇5.2使用 My SQL数据库5.3使用 SQLite数据库◇5.4使用 PostgreSQL数据库5.5使用bee库进行ORM开发5.6 NOSQL数据库操作05.7小结6. session和数据存储∞6.2G如何使用sess6.3 session存储4预防 session劫持6.5小结7.文本文件处理◎7.1XM处理◇7.2IS0N处理7.3正则处理◇7.4模板处理7.5文件操作◇7.6字符串处理7.7小结·8.Web服务8.1 Socket编程◇8.2 WebSocket8. 3 REST8. 4 RPC08.5小结·9.安全与加密9.1须防CSR攻击9.2确保输入过滤9.3避免KSS攻击9.4避免SQ注入9.5存储密码9.6加密和解密数捏09.7小结10.国际化和本地化10.1设置默认地区10.2本地化资源o10.3国际化站点◇10.4小结·11.错误处理,调试和测试11.1错误处理11.2使用GDB调试◇11.3Go怎么写测试用例l1.4小结部署与维护12.1应用日志◇12.2网站错误处理12.3应用部署12.4备份和恢复2.5小·13.如何设计一个Web框架13.1项且规划13.2自定义路由器设计13.3 controller设让13.4日志和配置设计13.5实现博客的増删改13.6小结14.扩展Web框架14.1静态文件支持o14.2 Session支持◇14.3表单支持14.4用户认证◇14.5多语言支持14.6 pprof支持14.7小结附录A参考资料1G0环境配置欢迎来到Go的世界,让我们开始探索吧!Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点:它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格 include文件与库的开头。Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。目录11Go安装1.2 GOPATH与工作空间第一章GO环境配置13Go命令14Go开发工具15小结links且录下一节:Go安装1.1Go安装Go的三种安装方式Go有多种安装方式,你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者來说,从源码安装是最方便而熟悉的Go标准包安装:Go提供了方便的安装包,支持 Windows、 Linux、Mac等系统。这种方式适合初学者,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了。第三方工具安装:目前有很多方便的第三方软件包工具,例如 Ubuntu的apt-get、Mac的 homebrew等。这种安装方式适合那些熟悉相应系统的用户。最后,如果你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GM,这是日前在这方面做得最好的工具,除非你知道怎么处理。Go源码安装在Go的源代码中,有些部分是用Plan9C和AⅫT汇编写的,因此假如你要想从源码安装,就必须安装C的编译工具。在Mc系统屮,只要你安装了 Xcode,就已经包含了相应的编译工具。在类Unix系统中,需要安装gcc等工具。例如 Ubuntu系统可通过在终端中执行 sudo apt- get insta11gcciibc6-dev来安装编译工具。在 Windows系统中,你需要安装 MingW,然后通过 Mingw安装gcc,并设置相应的环境变量Go使用 Mercurial进行版本管理,首先你必须安装」 Mercuria1,然后才能下载。假设你已经安装好 Mercurial,执行如下代码:假设已经位于Go的安装目录 SGO INSTALL DIR下hgclone-ureleasehttps://code.gocgle.com/p/gocd o//all bdsh运行a11.bash后出现" ALL TESTS PASSEI"字样时才算安装成功上面是Unix风格的命令, Windows下的安装方式类似,只不过是运行a11bat,调用的编译器是 MinGW的gcc然后设置几个环境变量,export GOROOT-SHOME/goexport GOBIN-sgorooT/binexport PATH-$PATH: SCCBIN看到如下图片即说明你已经安装成功pplematoMacBook-Pro-3: apples goGo is a tool for managing Go source code.Usage:go command [arguments]The commands are:buildcompile packages and dependenciescleanremove object filesdocrun godot on package sourcesenvprint Go environment informationrun go tool fix on packagesfmtrun gofmt on package sourcesgetdownload and install packages and dependenciesinstalLcompile and install packages and dependencieslistlist packagesruncompile andrun (o proaramtesttest packagestoolrun specified go toolverslonprLntGo versionvetrun go tool vet on packagesUse "go help [command]"for more information about a commandAdditional help topics:gopathGOPATH environment variablepackages description of package listsremoteremote import path syntaxtestflag description of testing flagstestfunc description of testing functionsUse"go help [topic]"for more information about that topic.applematoMacBook-Pro-3: - apples图1.1源码安装之后执行G0命令的图如果出现Go的 rUsage信息,那么说明Go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了Go的安装目录Go标准包安装你可以改变他们的安装位置,但是改变之后你必须在你的环境变量中设置如下信总,8o( Windows系统:c:(Go),当然Go提供了每个平台打好包的一键安装,这些包默认会安装到如下目录:/usr/ Local/export GOROOT-ShOME/gexport PATH-=$PATH: $GCROOT/bin如何判断自己的操作系统是32位还是64位?我们接下来的GO安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型。Windows系统用户请按Win+R运行cmd,输入 sysTeminfo后回车,稍等片刻,会出现一些系统信息。在“系统类型”一行中,若显示“x64- based pc”,即为64位系统;若显示“X86- based pc”,则为32位系统Mac系统用户建议直接使用64位的,因为Go所攴持的Mc0SX版本已经不攴持纯32位处理器了。Linux系统用户可通过在 Termina中执行命令 uname-a来查看系统信息:64位系统显示段描述>x8664x8664×8664GNU/Lix//有些机器显示如下,例如 ubuntu10.0x86 61 GNU/Linux32位系统显示<一段描述>⊥686i686i386GNU/ LinuxMac安装访问下载地址,32位系统卜载go1.0.3. darwin-386.pkg,64位系统下载go1.0.3. darwin-amd64.pkg,双击卜载文件路默认安装点击下一步,这个时候go已经安装到你的系统屮,默认已经在PATH中增加了相应的~/g/bin,这个时候打开终端,输入go看到类似上面源码安装成功的图片说明已经安装成功如果出现go的 Usage1信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检査一下自己的PATH环境变中是否包含了go的安装目录。Linux安装访问下载地址,32位系统下载go1.0.3.1inux-386.tar.gz,64位系统下载go1.0.3.1inux-amcd64.tar.gz,假定你想要安装Go的目录为 SGO INSTALL DIR,后面替换为相应的目录路径解压缩tax.gz包到安装目录下: tar zxvf go1.0.3.1inux-amd64.tar.gz- C $GO INSTA二LDIR。irPath, exporT PATH=SPATE: SGO INSTALL DIR/go/bir然后执行c9rot@sNDA-172-17-12-5~]#g0Go is a tool for managing Go source code.Usagego command [arguments]The commands arebuildcompile packages and dependenciescleanremove ob]ect日sdocrun godot on package sourcesenvprint Go environment informationrun go tool fix on packagesfmtrun gofmt on pack age sourcesgetdownload and install packages and dependenciesstallcompile and install pack ages and dependencies15tlist packagesruncompile and run Go progr amtesttest packagestoolrun specified go toolversionprint Go versionvetun go tool vet on packagesUse go help [command]" for more information about a commandAdditional help topics:gopathGOPATH environment variableackagesdescription of package listsremoteremote import path syntaxtestfilegdescription of testing flatestfunc description of testing funct ionsUse"go help [topic]" for more information about that topic.图1.2 Linux系统下安装成功之后执行go显示的信息如果出现go的 Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检査一下自己的PATH环境变巾是否包含了go的安装目录。Windows安装的文件,一路按照默认点击下一步,这个时候go已经安装到你的系统中,默认安装之后已经在你的系统环境变量中加入了c:/go/in,这个时候打开cmd,输入go看到类似上面mac安装成功的图片说明已经安装成功如果出现Go的 Usage信息,那么说明Go已经安装成功∫;如果出现该命令不存在,那么可以检査一下自己的PAT环境变中是否包含了Go的安装目录。第三方工具安装GVMgm是第三方开发的Go多版本管理工具,类似ruby里面的rⅧm工具。使用起来相当的方便,安装gⅷm使用如下命令:<(curl-shttps://raw.githuo.com/moovweb/gvm/master/binscrip=s/gvm-installer安装完成后我们就可以安装go了:gvm install gol 0.3gvm Lse gol.0.3执行完上面的命令之后 GOPATH、GOR0OT等环境变量会自动设置好,这样就可以直接使用了。apt-get10
用户评论