From 6509bab2ba67f2b35f1d257df5e234166078bb4f Mon Sep 17 00:00:00 2001 From: astaxie Date: Wed, 22 Aug 2012 18:23:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AC=AC=E4=B8=89=E7=AB=A0?= =?UTF-8?q?=E5=85=B3=E4=BA=8Ego=E5=91=BD=E4=BB=A4=E7=9A=84=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.3.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++ images/1.3.go.png | Bin 0 -> 14021 bytes preface.md | 30 +++++++-------- 3 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 1.3.md create mode 100644 images/1.3.go.png diff --git a/1.3.md b/1.3.md new file mode 100644 index 00000000..3f54563b --- /dev/null +++ b/1.3.md @@ -0,0 +1,93 @@ +# 1.3 GO Shell 命令 + +##GO 命令 + + go语言自带有一套完整的命令操作工具,你可以在你的命令行下面输入`go`,就会出现如下的一些信息 + + ![](images/1.3.go.png?raw=true) + + 这些命令对于我们平时编写的代码非常有用,接下来我将我们平常用到最多的几个命令进行大概的讲解 + +##go build + + 这个命令主要是用来编译包的,在包编译过程会同时去编译相应的关联包 + + - 如果是pkg包,例如第一章里面写的mymath包,你执行`go build`的时候,不会产生任何的文件,因为他不会默认帮你去安装,如果你需要在pkg下面生成相应的文件,那么就需要执行`go install` + - 如果你的程序是main包,那么就会在你的目录下面生成一个可执行文件,这个文件你是可以执行的,但是不会生成文件到bin目录下面 + + 如果你项目文件下面有好多个文件,又只想指定编译某个文件,这个命令可以指定编译文件,例如`go build a.go`,`go build`命令默认编译目录下全部的go文件 + + 你也可以指定编译输出文件的名称,例如第一章的那个mathapp应用,我可以指定`go build -o astaxie.exe`,默认情况是你的package名,就是你的文件夹名称 + +##go clean + + 这个命令是用来移除当前源码包里面编译的文件的,这些文件包括 + + _obj/ old object directory, left from Makefiles + _test/ old test directory, left from Makefiles + _testmain.go old gotest file, left from Makefiles + test.out old test log, left from Makefiles + build.out old test log, left from Makefiles + *.[568ao] object files, left from Makefiles + + DIR(.exe) from go build + DIR.test(.exe) from go test -c + MAINFILE(.exe) from go build MAINFILE.go + + 我一般都是利用这个命令进行清除编译文件,然后github递交源码,在本机测试的时候这些编译文件都是和系统相关的,但是对于源码管理来说没必要 + +##go fmt + + go还有一个优雅的地方就是提供了这个命令,他能够格式化代码,让所有人写的代码能够保持一种风格,这个真是太美妙了,这个命令可以帮你格式化你写好的文件,在你写代码的时候不需要关心格式,写完之后执行以下这个命令,就自动帮你修改成了标准格式,但是我平常很少用到这个命令,因为开发工具里面一般都带了保存的时候自动格式化,其实底层就是调用了这个命令。接下来的一节我将结束两个工具,这两个工具都自带了保存文件自动化`go fmt`功能。 + +##go get + + 这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code 、Launchpad ,这个命令也是分成了两步操作,第一步是下载源码包,第二步是`go install`,下载源码包go工具会自动根据不同的域名调用不同的源码工具,对应关系如下: + + BitBucket (Mercurial) + GitHub (Git) + Google Code Project Hosting (Git, Mercurial, Subversion) + Launchpad (Bazaar) + + 所以如果你要使用`go get`之前必须安装这些源码管理工具,同时把这些命令加入你的path + +##go install + + 这个命令可以拆分成两个步骤,第一步就是`go build`,然后就是把编译的东西copy到了pkg或者bin + +##go test + + 执行这个命令,会自动执行源码目录下面命名为`*_test.go`的文件,输入的信息类似 + + ok archive/tar 0.011s + FAIL archive/zip 0.022s + ok compress/gzip 0.033s + ... + + 默认的情况下,不需要任何的参数,他会自动把你源码包下面所有test文件测试完毕,当然你也可以带上参数,详细的参考`go help testflag` + +##go doc + + 很多人说go不需要任何的第三方文档,例如chm手册之类的(其实我已经做了一个了,[chm手册](https://github.com/astaxie/godoc) ),因为他内部就有一个很强大的文档工具 + + 如何查看相应package的文档呢? + 例如builtin包,那么执行`go doc builtin` + 如果是http包,那么执行`go doc net/http` + +##其他命令 + + go还提供了其他很多的工具,例如下面的这些工具 + + go fix 用来修复以前老版本的代码到新版本,例如go1之前老版本的代码转化到go1 + go version 查看go当前的版本 + go env 查看当前go的环境变量 + go list 列出当前全部安装的package + go run 编译当前包并执行可执行文件 + +## links + * [目录]() + * 上一节: [GOPATH与工作空间](<1.2.md>) + * 下一节: [GO开发工具](<1.4.md>) + +## LastModified + * $Id$ \ No newline at end of file diff --git a/images/1.3.go.png b/images/1.3.go.png new file mode 100644 index 0000000000000000000000000000000000000000..8155b2d5e9e0ad7d93b540ed3a319bcddd9c5b9c GIT binary patch literal 14021 zcmaib2UJsQv-So-R8UkD1f(1l>7XD*s!A_{^d3MAz4wmF5kYAJNu(pvQ9`d05ReFw z-lT&VAcP)@NeKKKzkBcZ-LuZQ|6*k&J0$zv`<>0K*005lTP*>Im z0BTq8p>~QId?z;}^CkFn^0AhhGH`VKm(yIB48C*PQ{Bu50M2zBKd4}W=hy*&8_-a` zZy1=dHfY`Oa+{}7EKMDS3XY*a7S~W z0q*r%-rvFVD#lU)LJLQDkE4Sv3W1#9+O;JUqLmcYnb2pQ^@9qyC3-u$;Io+3+mpRw z9dJ~5xGc3p)qCO=QP8R-?GykcpO0MT?CkcG(f?0XN!nopWHid(JZ9>mIknNZOkf)SKt9`IPF4m z(P7@SPs0AI#fVUaLst%I)@;035oU+Eeq4Hr+opE36I@+Q(W=3Jq1*&N8bCgN6G##u6jn5*DoV_xi z^_iKP5C%7JGa16ABkwd6r|2Mqv`dTmaa`gZ;||iZCcV@pw<-2v`9TmVTSfCh57kF6 z0$SA3uo(p>tCHQ4f^5kzsov&;IGE_ucE9_>gBsi0=k6S>YMGWr_2f=$nLA~Rg=vLM zOipdT=uGNe|F$(6Kpkn{JgC@?F04y5Qf7jx*hw_2|QttuI3 zghPCn-^v)8XK55ZFv#NJM`)EW2CM5vfcGp{r0=dToDdKsKD3z0HOC3-}S@i-%kVgR2gzdTxu=9(gJg>(JKG2`1$*nfT!Hg`2gVlj}7GjEO!Lj zh8{i}8%{Z>ZTa=<0EY5s0oNtQX6pJTWQGiDTb}?nfw&8=D<4gGb>zOcYm|NN(kK^K z4=wbMFfl(0d|iGPxRU2}w@!flp%gbhiSt>xWw>&;P&XWdQKSN{2wYT7&~cWIFQ`+m z%d2`TT<2Q)LH8alz;O9=uGO88jC3~cQXBwy^6ZD^T6xzft2uFCYSC$XFe+e^^b6mo zczC!pyL}e-=Gua;Ww;wmuxzC8rR35H<#7X4Pu_9~HE{Am{j z=GYQXj}QMAC;!6`akfX@6_iRU=3k$e9jz5x+$Q%x7^^Sv!sa&@763PSPwGMMT%%rs zDJVp6+-|Sj?r)1F>=M$OH_2&x_Eb;rvt4KIQ7pHf;Mb6K!?BJ|#%bv;LuJ%N(9UFf zr-l?AxS??`BvV)mg|#p%?v7fsn5FbN!>ZI9*6V11grDhOpaIIGlTCS8vnIK8M1=WZ zv3vbd1Ny1+oFUuWtbrqoNt(VJ*Rtx?mTB3Cm(6r1(w%RKrZC7zO&)?dU9Dv-1y|4?avZ zlalL}ettQzc@i_rg#DbHQqeb|Z7by#;+@LUdIQdwJCwDI9Lwj2JNEIMIX!pwiY&{2 z2MmoK06hOU&O6iSIYsCGj^vYW_H=fc>{uUH{+N^*_Ak_tmi3 zE!n?cfD_*1T39J0;z!G0TSOP@L(qN9ztJ|oiw8En*NMuzZ_Ov(e;w=dK))7_dC#~P zB}3hckx&)tZp#b!kXy+G7v^trahj{}U5MY^&+&8BFG%j(xKpi#fo(srrY*rDM~5L2 z$KInkx)Vc{)AZHQv57#)f!!C3gJ82Y&rELU<)!s}?#n~>H3R|=^TDIIMU3$CAVkN(N4>j*i4YWPK?>pr?WstemEU&Io z|I+PSK#Bi}r-;B|UCStiuL}?5nleJnP$QQDJ5B?tzy9qUlsCEdx;taWr~klG+O}C! zMHuG{5r|Z{iCHNlE58Ll7U5lCD3GW_5N<31`ZKR6>uN@VCP~;SIu1fU#~CJA zXpzz*S^x;Dxc_EKSnJ*x8Z8#mJfibruS1rZ%%)GQTCO~5kQzRep)bN&j4#gb2^|S( z5H)dk_DzCRB@68OOu8oq&%sINX%jWGal|Zs2QTz+Pb& zcpd-jlJ7Ig5AeKHod%=v>DvX#Um_P}dZGpiHK7&#Lnfp9i<6}p4ug6#BSZV^EZnWr zOg%TT>*iPFtdZ(hmu*w#c@yIe!%Y~;ot#N^ln~mi0jdv}a4PB_ieBSfVk@R8S1|ci zE@El3CrTda3mBpDeHT7qn(;dm{yU^*-)~YG!`B%Dzb!5x6_0+Avm-E4l@NPk#v9K2 z5pL~_v#Z5_J`5ba7j)~!bY88d#*$-f9bYbl|GNz>+;aAz{PtJ*$pU;$gZci=$)Yk(0 zXN~ckkP$|7q%KxJxcmKydvoS4vov%SS6?Pyy8QG(NV(&?Q_j39DRsMmYIcsbw0_QO zY}typiNaHslA{iukhjZi+ZlsAzncGe?tjDT_BymKPnl50-mbG`Y#IWy;v9Fx^lmS+jl#f9VitpH`yFj`MlT>@P z=vGQmW$`}?pXj+mosOJkx=C<~(L=O_D3oG)H~;?Gbljb>vC>EGxpfIUjZ-fAVa@HH z)TJSdp}8|bJlUFT91vFKUl{QS=kY93Xzu%cL`r-eWRNuP4S&=5Ha-j4%ptUv%v>{Z zZe*vK>{Yd&OtO?P;AKC~~u*5jd_Fq7la>-{mJe|bv7RLN>D+fdgJgR0iSTHf?B z;*0AP1LC=XQn^+`h*UP;d1kyG><{t8-c%33WTrMztP%W=V_&N79nZLEjHX44>SjR| z=}`ZS0T`0<%@|#{TSslr!-5H~d)9^EcKlRJEX&p%Cfi{4o?|pgLszj2;)8LwwU}q< zv`?;yVn3&vHut8qG(I2}R;PKFjz9v751`k&w`_C^8&B(Ap8xz-_tLZ+PHdXNFZCS* z;H&*2%7AmcYF5xsiy`Dm2sNYX`7itlas#ub#cH*@n>Mjv=lA#N!>RpnO|)|UQXV!i z>0QhE+f9?Jx)hayI!NamJ`ut&S*4nlqB@^ec+uI*MO2X4q;+uJ@#20hsDVF4E{aG>k5EO1X ztjG33NKI7*1Zw+uw`Xu?)P&#J%*>>Tip7zE%8W13bU2{|lx7cz8RuQI$d z+*;-o{|oCzNTBd+Xl`eha-A$_Wti@3^*&9xxhKx=1N*Jd*x~+}hb;H7IzQIW=F(!Bmg~K5^&Q)x2E&HuYgcyY>aS{Z$#j7e5 zT)E0i13X2&)!pe@j-+mVwDUL2#_!)5padSb1X(Tn%HrZ$^XXFLTHN)sON(rs zqU@L2#IEK9yuH`Fxe(6UceKNqcR>Vvfa*!p)Q#s#6a|l-s~~%X*E7%Zk~8&7t;I5r9eJBWjn=#AG3X4 zoL=YUu$UYaugJoF{hxNUv13 zW8;&oKLD$i>;<}ox{$uZG*91qK-e+L-eiA!D6M2fCtRw-QPW(&Ufm;=y-Z8i;#%*O zFt+v!Ti6U4xxhU1v5{e6?8AeG7%%D8m90k)(b7}buT%dh21BOzz0B)*H8J92|L0{{ zbDTnMue=*}8X4@9wpY!jH-Gu;9O`fTjcA!$Yg)4!Nd$-({oXOk4p;mIWvl-aWkU%u_CpQY?DwBtcr0Hc z_T=Q?UBcP9?ov^G)c_dXmE#+0_cU`#_f{BSuPQhAJD>$ax$1IW?{XX=W`*%%o`w7& zzWnfx8u3@Guidw#7g(xf`aMLJM-Ied;I)8O=~DW~M~D0$3#OcFSReussnOnY--n9b z+YD3!Z!I#ZNa;3eODS2|^PK=VK%=IpDcsura*zqQp30TRzTqXY3+{g1qv4FLIBv23 zLN)#?TY@gy<8|d$p*PLgT?0;&-g_je!|pF)CpWBk%-;N0#e1+FNaOasg<^eob#`m? z)rFm!>xn($&Ej2nF`fJ=p4)n3$(LJCcs77uem>Hk|>3L zlnZXj?%IEHw=d6*Rkms@JgDj`c(KoXL=8B3(7cke+zLrSOtU`s)FYAR6NRA^9&N_r zrSwB5Gk07g4lA0xThP)KiIN0R++cIXh}^oA`2(5YyH;y9+KO6LL&CrDW@ELE6g*^{6$eDcl;dLptw6RQHfc#3Vc)bNEy zY~h22lhTRfikIp#X03OFK2>DiPQXU;y%bGs*izam>01B`>C<-q)3yI*y8okC16@UU z1G3RsNEEhJNVy6?Cf>%F$eFIKAeaZO{70ub96&8(p~wnbrtJR5o#FS-CRfZ?9$Y+2Yp)nAO%Vy=~!H z{YI}D?2KQqn{2z6w-;(Y53caXw|4pLW&0-HU`l9i(<=O4us)ye`SGzb-=3AW)jeGa ze)-pU4TMWKb|kH!PB#tb8s)!Pn_yVt`VK;`MGC$)`2nr#)51ptTehKqbX*=?jNxJH z%O8~#&hMf<3yP0=J!RnAcZNiVo=v}BWcng)xsp1>K!!$%#ez)BwWtfP`)ecYus`}- z-KRvs=9=S(lgmo_@SSP6f}Z8vmP41ybiFmiPyJI#b@V53`aoRYz`r zm-PE3=#;F+HlZ*s?MCv9ga&m#{m7tSRA^^CYbpV#t1L3Pp(G+#<`S*jR?m+x?N^<3 z%T9RN>vI}N1%V6SEy9Qra5mp@%l7ucV8^{nD`j1@d9Bo9dNfCY9Qt0~M)%N1@e?ek$zkWCRMZZY0!FN>rexWd<$T_3 zm$J`&KF*3ti)FIUMMx!`Q6UZ|GM|VHF49N<@I~-jlH;FXlN;ip{KzF-LF~dXXGOaWck6E+a9;RXJs^U_iRH9@o zPZ2{m@`FLyL9Z^8=c!)aGadE44NzUjdod!Fj|0{;))*PK4~WXdpImVFGamCHMtj;a z$#PSMekNdxW6;8zM%%l3(cLd-F)bvQw97|nh#?@x;QgVkKTSpCy_1?t^O8|ms~Mpd zFGb@qkDCx-ZRA2>qdl7LLkaE*mykd}87jP%4P-MHnO>ZB=n9E*jM(G%(%n|+PiVd_oLG0W$Mj*f}TwwsB2nk(D;6}J-r@rht z@pO%q5YrfCR2uJDkXKdRG*Ni4Dx>s`hdmBU8!xwiP3!w^M zKKlI#f7&$RVBMlUs?e7Yxv&wMIzys<`UVUXknlH79ag!^QWya-&26ykS12R$!#;Me zf4H6L%MnipT(4hZg4z3~#z9XmsO>4lxjSW>_8}QkpZQ920jPyN z6KqhEkfct85AN<9m&Cvsu!-55t+Tv)*_`k>_2Zszm+_8H*1pZaI(!eeJ*VqO8#eO@ zr{JE00{S~bbFVy((s~b8yRB8XFSC)Fybkp^FHw8)Jm(`d-44DW4SM}Q7e(MqN%0%x zt}t#)Z15N3GwZPrP5WcQcQ=7=yrhV?&EDqvG&Ql&E`2|`oBO=z<=RV^n8FSa`>v3_ zwf*_^l(D_uII#=}0;G;JEl{O957UW~f);S`(#qTX@fLHp*$m#f`Opm$2v7xbXi5)0 zRTu%$>MW`VtO$l8&2hkNy zcZ<>OyCPI!VDZ3ljDgJZHliXp&82s&2x*gHzs;;4v@;Y|L!0N@8(`5)fL6{@X+K^g zDi7Un#V}=58cA?KX+4U2U1u^4v%CoAGktjgz-)G`1&B5OPDYL-mCsUro2zI)%#1m| zb3-Jt=lS66@lDcd006;&X+8V3Zr0&qL>u&UkNvmcaEITY9uCdLHoe3zF&S|J<4Ng8 z*ay%CFD9sWccl%>5C(LDnL#}EW3dZokG%|dBB{p;11}dY@&K{z(JH!d3JopLKW4`z z)Yf@f1-KHMbv%UpJE*>)kU4qP)pml)Z_8Ud|Jpm~)AbJ9BXB_f{U~4Qk_LvQE#ci32+s)JmjqW_p~}*Fmp4UDvKBFq2ji+{?ZFFl8Z1h z_BJ{}|LwMLJ|1VaZbcV(<-Z6Jvn8gUnc#!5ClvmKZ7>{&q;!2afk51Z19y45li9e~W zk0{lPBX{qjFgzaA?bPs3L3-(jCY64?NdL$&U;`u*m5{@GgY z-|QARI1O=RWDW~I+9Fca?pnOAz6v}wna5dz-vs;ccp(M=5GG!l zUp5yQm#KlAg@1I9e``&SC+R!Wiyo>i;o+0kp`nMG)^uk|9K7-r`L^h5lLm1~!?c6u zf;~(W?F^lsVSr3|K6i0lyl^;|?HB>SD-BMVzJMTF%uUo&1$oeX`g1=ki zRDDar$lxwU$8%Jpvan?Yg=!eYeYfge$*;CZ!&Tf6R;sluM(7{jn=NW=+3AKin06OC zc%eAbuoZ?MUB6XkHdQOtqcrs}-N6Z5F@ssbK_x_E>!x$l;^csVKK@vcN6120(Q5Wx z7~lRbBAQUU%~xG$&Dk;IyVq_$aiHB?LMz=Uq*gFar*8)Nh%gK%XZC?W+S98EG`cfc|94R7u{_SG13p~iD&fU-Mki+Tj6x^)Q^=p_hhKrt=-}e2fdG}Ek1RW_zf#7KN zLPX1$;oUx3YAf1gA=2F!nas*sPG9AMtV~Gu0hpIJY+&Av>L#c9t9Q0;O@q5I}(7W`|8WyqA-`~z3~8crrKFAYu(=8g}K|lH2nQk(Z%1&gXU>s6;T-a_T6`f50G%caeJD{NQod}}J03ntdC{H9| zr;bGoQVK&@_T%yL#?2Wf81;>3pu~gY`1tQBmEZD^-^dI`srgJ#C@2nbn?x^(jx~*7 z!45_PrykQZ8ZdyrY(Y3MRyymZ3z)`Bug)&*bCFxTi&}Q9v^YslCc$-$mal3mKIm5R zatf*<+VE=&Dm1iDQ>0h3tMA(^!kfuSevjjmL&nFdMQ2$AJos^W9voq)N`i@%;_4HU z=3UtC?%sIDTFxrMm&M_8llH4XhB>PBR9!=vNy)x8>;oLNogYOkaU)_KcQpboT9O`; zscS7zhzhSEuRFi&>CYMr7pkLviuU~7r&eJ?bJbeV^`RMJ-*<$SB<5%bxu##rMr_@6 zsS~tXWmDX+HrlYmwUg+me{q2-8J7pl~-<ELjIKxQl(rv@Hf4wXT;gDJWFw_2fiWnX!yw0;NlxT1?(LW6d^ zZ!QCXsu1;m$^8C<{P;@>|JTs`?SM;!Flm=CS?dO3>AFaC7i7Z9e9?|ram&g_P{4Fl z#^UI^z{7@bSZdIrK2`>}+d5@0-balV0#`afGFI}*I=gEB$1L~3@3$JN51dk~uw;BQ z1iNijGfF;#PD95SX%g57+2b2$3Gff;bi@bQ)HYYWzPG%_Trl>@+QW4k zP=koH156+*Z9cZMOrzF*7q3!ZG~(^PomF#S_OS3XNs2J0*JzN6v+MYJ#3$A&YUN(T9O`!ZDAoE|G`qX`KF_M}`tP~Fa*2RF`xJ}E z`r+h(I_?ISyE>k z!{ZGKA3oM4wFdPj#hpI_xlp^X)j|rV`IIG|?T92aCG~oLHd?WLf?1PNPAE;wq+cnt ztgwvFmrvj2@IB}&M?Omp`yUYP?8>e`m=GbY=8tivGX|T&wGy7GYXw^!TrDID#ZZcw z7ODiE?eT9sW+RMSuUG6){6QPkzW7#zp7(p91PWYouK!;xpYLQrc5MD@i)6;pE zo?)Yqfz9OHl0ECqezB=Je_KPx_@8xmU-}558>Dsdf4j)+6_F z^RC0JHD?DE%w*s_>APub(hRq1BWk|)>^`I0?BPv&*exHk!upAL|6}-Y6}Hp2^4GBC z5*#_-+|B<*%S6KxA2L0HNj;KY{SqSA=Xr1Cn++KfSZK(x-eUKuW_}7PnZ)E&J5-$1BGHN#o)mb zOm7B@nQ@&9{icVN>f_$>Ta{Q3xx;4zaInvf(ozE1)62SUrK~FwN~}-o%t8dJkw=`x zEr(N|BQH`(ts~z_pL;fDE*m`)I6C*|<;`K$1!)?{>wj!ob2^6_uvc~xGITE`2hJd^ zOS%WVsDw1}G4K=QHLduFq4>k>AFDR;Da>-4n1Q5U1Oy4uqeii zSxKNp|LZ-JK51~VI}M!;C1S>)q!|jVb20AJnc?Bc=C2Q@RdHhn82d{_7y-y;yR$CH)C)gE;%_Z_S(U79GoUR?P7 z&2SZ>jJe+OQTSZ(ub9^-cv+@b)`s#AG_TF?&`G#TjJw)`w5Bra(-Db+2Z9clB@R2V zX`og?*FxPxLlwfcP>KDOi(2bFox>h!0u6ZV z(&uYAPDG;emQH~DH;E;sCqD2qfhRcZtk9FRXyV28C)89fjJ4bkA$sR{fOoe=g`Oh#x^EW~FyejrDWG_WKTM1K1ZOJQw<57FJ(aPBlb=!LTG9`DMiId+POdrD| z*P-t`rs}Hu=;bRjPoRl|yR?@QNHJQ3cGp;EtLND%U#;GZByGUfeC$Z?g}tusJ-*v( zGW+i753nsym&;#<8N8F=TK+D%1y9P-AZMh4NG#GwZP}Ns{y!o?a-9sO+)1h%xghBU`OI`|L@~*nlE7 zmbS>t7TZkmW3{c&b(tCI-YrR*f!Cf7#vT8ppB@=ref+8CJttTm%xV6m9{87(El?(a z%lr>^TF;1zAEr-jJFVCIzKNYDMr$|y3|tW9*k?&z-5*%$LB5xFs^uOF*g81i!#EXZW{+IY8PuJ= zo~VJls#RiF!jHtb&oZBuzDUTtSwga`cfi_fxzJ&)oMKLtfkO7G6wZ`I@8=J#H^2+*?TkC zwUVB6^5MtYgzYc6X@BDrX6vHO*WM=(2FNDPx^vWE<;5G5)3`#%FMq+c9aUzoV>*Ue z;dJNXhcs&bFrRfPfqbP!+Y$oVFBz`O^p>j4(Pq2kbc3^tix+&871c*P>P3~wmXZFb zlWQ?ezruecsrGAd3TaBTc(J!6HK7{lP>ZwP4P8mN=)KdX6z?fv^nAbaW1M=r?`%sc z*DcdD@TUd~PjV;e7n$T|9&-64x^qJ{tcVh3!L1#W3f+;MJ-hi2)7CZ~syRi(EIe%B;^%?%kPf^Q+>ch)PBVN7&8@$Lm?%?AKe2G@GFus8cUG4}x-g+L zQnFRzRBrt_2Lh&lxK-l+#~*;11Qe$=Mc?<0A%g8lz21}Z7u#&203d3}C0qB&&>~7Z zOy|yVp&*wPa?CiCAJ4^#u7X-^^bQl^y?B~Jiq<};$M%ln?mp270P0sNP67WVaQ{0; z{7oKwmCr6h$$=8;2(^C7vF82UCBwcS>Jg8Au(8>r<_h04lv)y-{$VZt3n(;)u-vM~4eE$spkbEw|PF6B+ zi$_}WrfNTa^1fntnNU~sMicKC;T)6_ny>I^)E%B{JZa4zArYWO+!Y#xC4_P4%!Xv}$>zHr ziL9M3LxvylSx*R|VaiT@ty`91ZX2UgV^ZNWvWp=LODw$LY)4*nvI%#W$AVM#RCkp| z5WJ$$IxFuJZk4XOx*>Dtb7J@VpBCZy-<{V+5r$!Q#Pk?0K?kbN^zb?9;@ZODL#v5D zEN7jq($JCmS@vYUHM6jfOXN|BsSo{$(jAu(+BCE8MV@dX-n7TtS>gHjO5x)kwHL6h$4R3zSpFTl7F-;4`MXkQ_9pZ(-YxF>rB zpN>k;XI9`$>3gAEf=YQFesuy571FPQ%+OyVQlbI^OTI>{fU*PdRU|1|rBkb3(*t(l zH7J8#N(aLaxEiYH#UD}xvTtx4uZWt%oe)z5rvNb5!*;)#A(;m38vSEUY5qa!_WL(r bB(7ES*@w%|O@D&FLIX5Zbd<{;*gXG#2eEA6 literal 0 HcmV?d00001 diff --git a/preface.md b/preface.md index 23061bd1..7f97e555 100644 --- a/preface.md +++ b/preface.md @@ -1,8 +1,8 @@ -* 1.GO环境配置 - - 1.1. GO安装 - - 1.2. GOPATH 与工作空间 - - 1.3. GO shell命令 - - 1.4 第三方包的安装和使用 +* 1.GO环境配置 + - 1.1. GO安装 + - 1.2. GOPATH 与工作空间 + - 1.3. GO shell命令 + - 1.4. GO开发工具 - 1.5. 小结 * 2.编写第一个Web程序 - 2.1 概览 @@ -12,15 +12,15 @@ - 2.5. 编译测试 - 2.6. 总结 * 3.GO数据类型 - - 3.1 基础类型 - - 3.2 string类型 - - 3.3 数组类型 - - 3.4 slice类型 - - 3.5 map类型 - - 3.6 inteface - - 3.7 struct类型 - - 3.8 面向对象 - - 3.9 小结 + - 3.1. 基础类型 + - 3.2. string类型 + - 3.3. 数组类型 + - 3.4. slice类型 + - 3.5. map类型 + - 3.6. inteface + - 3.7. struct类型 + - 3.8. 面向对象 + - 3.9. 小结 * 4.正则表达式 * 5.web语言处理 - 5.1.HTML处理 @@ -35,4 +35,4 @@ * 12.静态文件服务 * 13.如何国际化 * 14.编写一个web应用 -* 15.如何编写测试代码 +* 15.如何编写测试代码