From d8016eebeba56cfffa01736cc9b99a4ca900cd6d Mon Sep 17 00:00:00 2001 From: cy Date: Sun, 13 Jun 2021 16:34:20 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AC=AC=205=20=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chap-5-First-go-application/chapter-5.md | 215 ++++++++++++++++++ .../imgs/5-first-go-app.821f797f.jpg | Bin 0 -> 24606 bytes 2 files changed, 215 insertions(+) create mode 100644 chap-5-First-go-application/chapter-5.md create mode 100644 chap-5-First-go-application/imgs/5-first-go-app.821f797f.jpg diff --git a/chap-5-First-go-application/chapter-5.md b/chap-5-First-go-application/chapter-5.md new file mode 100644 index 0000000..9454635 --- /dev/null +++ b/chap-5-First-go-application/chapter-5.md @@ -0,0 +1,215 @@ +# Chapter 5: 第一个 Go 应用程序 +![5-first-go-app.821f797f](./imgs/5-first-go-app.821f797f.jpg) +## 1 你将在本章中学到什么? +- 用 Go 写简单的程序 +- 编译 Go 代码 + +### 1.1 涵盖的技术概念 +- 目标 +- 汇编 +- 二进制文件/可执行文件 + +## 2 简介 +在本章中,我们将编写第一个 Go 应用程序。 + +## 3 应用程序的目标 +在编写代码之前,我们首先需要确定应用程序的确切目标,大多数项目都从这个阶段开始。 +在本章,我们的应用程序的目标很简单:启动时 +,应用程序应该显示日期和时间,然后退出。 + +## 4 项目目录 +Go 应用程序由一个或多个文件组成,称为“源文件”。 我们需要在这些“源文件”的中编写 Go 程序代码。 应用程序存储在主目录中,该主目录只能包含一个源文件,其他的源文件存在其他的几个子目录中。 + +首先要为应用程序创建主目录。 您可以使用命令行(或使用系统的图形界面)来执行此操作: +``` +$ cd Documents/code +$ mkdir dateAndTime +``` +## 5 集成开发环境(IDE) +我们马上就开始写代码。 那么问题来了,编写 Go 代码要使用特定软件吗? 答案是否定的,您可以使用任意的标准文本编辑器编写代码。 市场上有专门为开发人员开发的专用软件。 它们被称为 IDE ,即集成开发环境。 + +IDE 提供以下功能: + +- 保留字的自动着色(语法高亮) +- 代码自动补齐 +- 重构能力 +- ... + +市场上有很多 IDE 可供购买和使用。 您可以通过搜索引擎找到适合您的IDE。 笔者使用 IntelliJ 公司开发的 Goland 。 + 这个软件并不免费(需订阅),但功能强大易用。 + +## 6 源文件 +首先创建我们的源文件,并将其命名为 main.go + +```golang +// 该文件的目录为 first-go-application/first/main.go +package main + +import ( + "fmt" + "time" +) + +func main() { + now := time.Now() + fmt.Println(now) +} +``` + +### 6.1 代码解释 +- 第一行在 Go 中是强制性的。在所有文件中,您必须添加包声明。这种声明由关键字 package 和包的名称组成。 + +- 在第二行,另一个关键字 import 的后面通常跟一个左括号和程序导入包的列表。每个包都写在一个新行上。每个包都有一个由双引号分隔的名称。这里我们的应用程序依赖两个包: + + * fmt + * time + +- 这些包都是标准库( standard library )中的包,可以直接引用。 + +- 接着是名为 main 的函数声明。 + + - 函数声明用大括号括起来: { 和 }。 + - 在函数声明中,我们有两条语句: + + - 第一条语句的作用是赋值。我们初始化变量 "now" ,并赋予它从包 time 中调用 Now() 函数所返回的值。 + - 第二条语句的作用是调用 fmt 包中的 Print 函数 + +- 警告!与其他程序有所区别的是,请确保您真的要使用这个包才导入它。当你使用未导入的包时,你的 Go 程序将无法编译,但是如果您导入了包却没有使用这个包时,Go程序同样无法编译。 + +```golang +// 不要编译这段代码 +// first-go-application/import-issue/main.go +package main + +import ( + "fmt" + "time" +) + +func main(){ + +} +``` + +### 6.2 关于 main 函数 +main 函数是程序的入口。 在每个应用程序中至少要有一个 main 函数。 程序将从main函数的第一条语句开始运行。 (请注意,在 C、C++、Java 中,同样存在 main 函数的概念)。 + +## 7 编译 +现在源代码已经可以被编译成二进制程序了,为此我们需要使用 Go 的一些工具,打开命令框,输入如下的指令 +``` +$ cd Documents/code/dateAndTime +$ go build main.go +``` + +第一条指令 cd 表示将当前目录更改为 Documents/code/dateAndTime 第二条指令将程序编译为可执行文件。 可执行文件名为 main(与源文件同名,不带 .go 扩展名)。 让我们看看现在进入 dateAndTime 目录的文件: + +``` +$ ls -lh +total 4160 +-rwxr-xr-x 1 maximilienandile staff 2.0M Aug 16 11:27 main +-rw-r--r-- 1 maximilienandile staff 94B Aug 16 11:00 main.go +``` + +使用命令 ls 你可以看到该目录下有两个文件。( Windows 用户,请使用命令 dir): + +- 可执行文件 main 的体积为 2.0 MB。 +- 源文件 main.go 的体积仅为 94 B。 + +现在可以启动我们的应用程序了: + +``` +$ ./main +2019-08-16 11:45:44.435637 +0200 CEST m=+0.000263533 +``` + +祝贺你完成了第一个 Go 应用程序! + +## 8 自我测试 +### 8.1 问题 + +1. 如何编译 Go 应用程序? +2. 编译的结果如何调用? +3. Go 应用程序的入口函数是什么? +4. import 语句的作用是什么? + +### 8.2 答案 +1. 如何编译 Go 应用程序? + 1. 打开终端 + 2. 转到应用程序目录。 假设有一个名为 main.go 的文件,其中包含一个 main 函数,使用一下的命令: + ``` + $ cd /code/myApp + + $ go build main.go + ``` + +2. 编译的结果是什么? + + - 得到可执行文件或二进制文件 + +3. Go 应用程序的入口函数是什么? + + - main + +4. import 语句的作用是什么? + + - 用于将标准库或其他来源的包进行导入,然后就可以在代码中使用导入的包。 + +## 9 练习 +### 9.1 目标 +创建一个 Go 应用程序,在屏幕上显示字符串 "Hello World" 并退出。 + +### 9.2 改错 +```golang +// first-go-application/hello-world/main.go +package main + +import "fmt" + +func main() { + fmt.Println("Hello World") +} +``` + +注意事项: + +- 在这里你可以看到我们只使用了一个导入包,所以导入部分发生了变化; 只导入一个包时不需要括号。 + +- main 函数里面有一条语句。 + +- 这里调用的 Println 函数是 fmt 包的一部分(fmt 代表“格式化”,是 format 的简写)。 + +- 包 fmt 是标准库的一部分。 + +## 10 关键要点 +- 要创建一个简单的程序,需如下的步骤: + + - 创建文件 + + - 将其命名为 main.go + + - 以下是程序的基本框架(这段代码没有实现任何功能) + + ```golang + // first-go-application/skeleton/main.go + package main + + func main() { + + } + ``` + +- 此文件为“源文件” + +- 从这个源文件,我们可以创建一个可执行程序。 + +- 可执行文件的创建过程称为“编译”。 + +- 要编译程序,请在终端中键入以下命令 + ``` + $ go build main.go + ``` + +- 要启动已编译的程序,请在终端中输入以下内容: + ``` + $ ./main + ``` \ No newline at end of file diff --git a/chap-5-First-go-application/imgs/5-first-go-app.821f797f.jpg b/chap-5-First-go-application/imgs/5-first-go-app.821f797f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..333a96cbd1051802c6f6ecf5d3d5ed65d54169ac GIT binary patch literal 24606 zcma&N1z1$y)-Zku6%hmJ5D=te=q>{k>28pg9JT)0fkp{5pGW>9;Gr->tkhl?8mh)a1onwZ&IxYC(gSXnzr z(C^ka)6-d-OVDczC~_-0KDT&l{mR?fLfu(OvIdCN|H|8Q`FPm(cZ$8ZShxHY#o)cSuc;3=Pspb#(jGv4PyLj3$Z{M zxSt9MaPta@@H`a|;-mkkkNN-D@c(BY2sk+ebCUn#WdB_Sq6_BoKX?k>{0Gx596
xN-CLP4IIE@8(UsI|TUnckuBE9uWL3 z4+!qve{laE0TB@~F%c0p6%`dV?SBf^ty{P565J(!@PM3>gph>tKM(%@UR?hK2=TBc zu|06G2mx$DEF40t>o%YSz`_Esalo(t6fA5U+#5G<;bDQ5;Di7D1l+={2LLuUHrVRM zP3&7Yad7W|Tg1j8#J%zOAN`UjZy>HoOdt8vuZh;ZB%>eM1Gn{`<=f0MdXK z$M>*6T9!sj)fQ>05tJ3 zRKRimQ}Do9z=9np9S9Wasse#(z=I58I!u26ONI_h8hnUZ1s(XC0nibHlY`4+0q7`I zWM5@|Rbc_gXCVe3{_g^|0GA=nWAT9gfeP>}m>3(})ica!Skf8N;2Hr8LniJ5Td@Fv zU?pbs-yvaNiQfle2V%cdA^G3q0T@0F?iOGnBq#qt2e3TA(gYrWeavryU2k+@R-h6H zZXfUOS}R%=E$k+VS7RZkd^%4SM){J`w1>K==-B^RV1#YH`ZtLx}CvP^=Zv!;a%V1xfAN5{IU? zjdF>7KbH|HucNwM(y&&f&}NdJsX-Ht)@H3@KyDiGh_jKLXHu0F{;Qul4tTL z+jnzQ#zdkv^zCjIsocwik%wlqHGI6*+&eM~{eE3Ja10N{am@b}m; zP5)a+04yNvUbD|<&3iN4+*v--jEPjFYuM&`AXIx5t~)W(L9 z_Q$N1#5iNAW|>O;jscaom?h)iV9EZwbZ}??6#7p9@DqdlvN1Pb5qu@a$H7v-1-?lK z5`!f3PaCXvKnCXQK$HZe8E|f@;?WV~-5Ny8xRl3FKwEgXjjf(5);HB75S@xfwviuG zzgz?NYmU|uTqK(66;}U@WF3=qzijOrbmuoVls;L_fzvCh`!zR2V>ePjBw{T(=c zCo1{lq`vx0uEfz`;qZRw8Raf5*^u{~y=AGqM^JLA^-RO?0&+kbJO71S817;7=K!%2B^5f)!z>Ug0yV8;2; z9K&!xu15HS=Zz^Y$m9sK$7wY#12^3zq}mOIM22J1wHEix1cJ&^&|_gQs%@N-ME%@0 zRHLsTWT$2Arj*sr?sk{MONsoF@)zN~JCptLx=NZO&tCH=Q}}r=Q(p8Q?#|5gH+!=Z z@#r`!#ppvRI0k5pWwzW$e6{)BmT$8rO39mp`)0$T1HUo+5d6Uu z@bUpDSpb0Ys|?7wiSe;OjQR^LOeIM4KExdxRvJ-GDSFmtZk+aCdZ`dR+~-h8oBdn6 z*MhB;La{J2$!J;BoT%i>#MY_;t3R82{kuesN1eAMwz~$r!UZmeJ;enr3-(@i^E9v1fY9>^)l&LD6_(= zwjebk{L`gvzCgd|3Uz?hdgVd=QFVXTNK@d@B2=HZcHVoxN6ts?WW}mLx%h~(W@I^? zUBXnbz9;cU7r{Getf)7bje;UU1w+c1f+hVAf@Ef9;@^-4c`jJ50{kOT!3O;H)|+;% zWvH>p(=+snMq`1<7c*~}ETVf=G;s@$85w1r{v>+}4f2^^>M;c6OLaVoMv}JyJC5foN$p#g@l- zn&hK)<}6VWBR&hHv2$p8S-lDK8PAtj32s;4j~S`Ss8I3uOG?dS_3GA zbif9QsVp;tjSl2U|M~+3Dh1Y83T*RxIjCfqc3pOEl&8DdH@-T+p^%)Y^;{5w1?q(L_P35vv0Di~lY$TGXZmJD!jx{dFuZX(^*B0mTQ0Bl6;Oo^&;A$ zAMtZDPwSw0)O|F|xT7wPSt_(e!n;PhSsNDc15xZGG3P(vGpe<`MM9<}eDmy3b z76clr4QvL7iu7m6ML2{=1f&>@*PTSZwAx*;D>}Umr5rmH_2IYQ*tyE>w>5EPnUZ4_ z7DsMqMeCkXo>M|>kdi91tt%TvhXVWQDUz{m{!32!g3pa(^9>}I6I8S-*_h_99_^n? zcAKR5tXCSpR2-|YWX?jcGDR!19xGBNYuDU~`YdgJ^A!M?vm0IrsNUP8kqGS@>RKAn z^ey77J62rHddKB{`?7M`XR^I{2mi%U$;&cfzC$~B5+b>6B&hNDW!B63F|W3^R>L#* zh*`rh^Q0ax;=fAHU#0?JQAWzX!Vkuf7e;|& z!N$_S3k0ypX{U+dE~fkq-)M=QoKLZ$ zu{d~tRllP!Wktkw4ZxP(&Sq_l#YRMh?kjY6FF9@JPsFqEeU&b9l2Vzr7ux4`Y7Z?d&_YH@$4{9P(Q8ZB9r*z?|}7w~z6R!%%z3aeRFI7Sk*P>T<$EXwiqd z@1ryh4h3=C!&l^{i|uEY53uw&M<5X%#*CuREvqqITE6g*thq00gy5|q_$22J6$hUK9jkt|J< z&z$_sSh`IzBXp!g1f#lndmgWPJ<8MfP4m~-i`=_H#ES_I_B<+99VHE()r$9frqn-ipCeIVcya?D6zjk@VwS(+ ziUqvR2eAv3?lv+MbgZCF0b*PRDEsklJiwbE2n23&x^_nI-!yvp^^eDT6VwQ9&$%Me z#4f4Bo#1yb!l7PE9R6^}Pps1rUc_p6FlpNxRLa0s+teCK#TmSPZ>9v)Y<`9j=sdbr zbnMv(Q*@A&uT_2FU%`B9T6p^Y!HnMF4j+P#G>m&1MlopBQ}K2toICF5o5QI3>#jlp z3X_FqX!Wh%8(%u?XAi_fwfTtqG@BnO4nFy*fmaY{Ldgay0>8;CaBwvZ$#u-`UMUAn zUjy2UPN?AQs^cUFve5>Os4JE;_@bwmuV+G^7)^aVk0jA$6AZpjN$tPvec4~Gf1&+L zSF7(};RfS^A~c%}xh-5ilC`!t`)J;^vGBv7_sCG4QT}hZzLn{$eq|x5?m`3E^l;Dr zaf}kR5?Ofl(C8T4ayGevbHs02J9`^$+RarS6Tr_Az3)#DDq-}a5ctuuG^^ejao5LX zLHJy7GwsJA>6OQ}l*oKSv$l6?;xl=2tNQRdai=G(2I+mC9&=26S>-i<;^k>1N7kF6 zh@71MRb?v&Se6T86ka#hvp^Nl0>w~1=GgwFcYuQ9X10cT@Lz^N3}6gfP&Oz|6OWdg zkGlM6XnWB!9_=t7y6k!wvAW;-EB<4ZUudmkiWLb<#o{F;k4-`=9XVDYXg>iA*xcL} zG_$Sf8YnpJ}W~T3$_RKzqZ`ZY|{%mo8W#2g^uLiQ$#nh+XQA^ ztzoXCNduA^^XhlDi+rj!hip&G>~@PKMn)%8Pfn~*RF;HYB?y$zJYp-jZ=txc(bjUo z@XI7^|E*ZY6LCI!cdgkp{q;t%R>8?=t!FInTmG;lhYluK5Cs(--4ZZ#pZuj$PuA}r zR9@OJdH>Y>ps{bkh2K*jlK;oqe_8U!Dc*kLhNkTV0&W>9u=~C&*>u62_Cx4em*@_@ z_NJc^v!!#{EQcspbZ@zlJz8-7Br5{3hf{?$flgO3 zlxj-a+h@yrCY=d4tW`kc{a$t2iqwdk#sbY|?!KNs#c5g^gmy=N?ZCxLJ-;?$Cp6+X zt#e#;_I=Eg{n;Czn_6e95gk%@k~>f0l1gv3+`P-H}y@iZ8*AGbnuMQ3%_fAE^p@IOqsN|Th|_w=3_>JWNm&D zPIcPO9$y{Qo?3;H*dyGG?bsB}Mt=?ZsM}oAcdhg;GS<1>)x})2ADu2i@q-3yKD2`ZsvHEadyd>MJ z>Cx#3tKBA2>KU{)2i{FG-EO#E|7%{&WR9I(&;C{b2V!PWiY-#0cY5=r9|}v}^7awf zwizqc@8bxG3LyGmb2dP$t#8RYC;OCSblbF9eNE9yXwz5&9sab#>7wr4G}hA?Yk|*o z4{eFa<5W2z^190>T<|zgN=p~y-O{Fc!8L6>4p~;;yGIDUE1lLmMppGt>}=y+1%sZM zE^03Qkb=l@l)7IzOh?g6&|#>_ZJPV=z;nNsUwqC1t>HElif;6W(7<9Ap;n{<@q%W{;!C#w)D? zVhzadpGt?^0Bi0%p1u9DwN~KtJ@dmuEd<*ti+l%!U~au_g|`)p$}K;(T9(j=Lt*ib zK4Ee09+{)I9wf=-N-TBaP8}f_xd0VkS>k|4? zd6g>H=hH7yPt|n74APfF>@NwKobHhHE$m2;wDu}T=zF+L&%W-y2Ha`5-=9(6Q<`i{ z*KZr5To3kwX%JNh;al6-5Q?4HlL1_~>c*Ae=Mh73X@{b!V-&nNX18m%(@tlLr5 zpJ5DHNn0PbrpBU`+;q3>J>iRqI(;VdKf>J+cjy*`^Pb5+4BazjGAksa@Le4@N-7DP zfUy?OuRBB)*a%-1UCBwUbq_5%yV%J`Z`DNFoWJyRm3y-(Y5yz%Tew56MV=?hy2NFT ziI1EeO3^#zKeamvCA17L+bNfID7;YH3vj=8pQ$Dx9^oYD^?ZUxyHt9UNE;Q(b>9Q-8-P% z)?&{)RBk@m&7ecFT$?^aLlr&|OW~n(|KaxF%c~ZP))k*^N=_tSqO&lqu9I)QO7Uyb z=0DKE33{W5`&DDzmu0&L+A81?Lh2AR0VQe+fT$jy%^I=oMk<&n14Zgl{9z5FqGSQj+dF{C2D>Ma`&*#HET>E5-uf zJl~lA&6txBg?y%@*YS_b(yWc`UF8FstlaIl_S*+z(*?fUP=Q*-YR2s|qI%a>P_7>= zXw9S2`E1nCl$qa^j9a#M9HgKQ@((+9>&hy5-Z**{kwcxtyrbj_@?*R&oPKLLvA*py zIk0zQRuF3z*S2foS-S=@P!d}Grp8oFX+jBhzmnD52%HfT;WjH-_P>jv`C-}7om1UH z!DnT~^~!I(q0{XwE(T%hSB4d1u9SOT4xC5V!0oP;KC7(tMmyyoqumUKpX)Wr4Y974 zAqEcfN$sMgwzbW6&E+I3ld`@J@#_Mb&hdVS4*j9Nt9H%&&67LywKBwXpf4O7G@_kv zbluy@CgCo8|6TeYhOUAIuzqq=D(Fe=k7F#cq#!wHPoRbtgC21t& zyw;Aqb*ne>Nc`5V?np9qZhG<(fNDb6Yf-57)@zuev!KkPP2%@ve}bb9`@23?S<9%+ zYNPJ~mW0Odj@)3a_roXcrUF9UweZ{3>EiSX+ze11$+lJUvlO}40FE-f6mDb69Wy)0 zYSJ7M#y`W>7m0_1gce%VRmr@GyC$C$2&7KC9-*S^&_bW2)S0BZ|xNmilM!430<>3JACX*KJVZ7ZOzS( z@7EB`SdPNdH6Rfuqbnk1mm^-~2(25LGqx&$y_TgXck)ji&l+PB*XnODtJYGRDADb# zG_@@~QB-2DUCq5CuTbew`0}j}zOWcyYLmQ+{dtEL+c((WaDkxsxjSW@UeXW8@m%8e zhTck(>TPH{Is=NIBMmYEpceb93X}ALGj-59!d$A)&t*&2tyuqP<6u)FRcvnBWd~I@ z*w*{t#INo$6-Lpc%TA)*w6ojGWM*@j<~L=^z`dhdw2bk91K;s6A&kF{XAEx{l6^&= zfl(YVIwXFer<5w_hCkL%t=+hK8OA|bG<)pdWP6fzk0~6XUTLsluPA3mWBz61$RS&= zoM`gsZPjA(zBQiSbhpBZVILft*c}Bh1#KRpTz06^G}Vfoq8SDfbO>tNLYiO{8G|M-iz~X z)Jm0K5Urh2Bt+H*iVxZ$EuuRfG4L=XWV#YrCPjbf?DtSsZ++R0doqA>`JiXnOv(Kk zNH%lVyg((67@+^!3Vuf)KIlsPsKn7V}kw*6J@N9(Pfqj9s?#kYgJ@ zm$~$n@;h9$IiDtmTVP*{>T>ePebDlTQx!7^+bY6jSb440t-L>Ri})n31A)gRRPqI$ zuNVfPsIqIIKvX!KtkD8mX-<2_JF^_*X0oFv0tsoU-JO(&mbq z4Yha6?s3OM8$EA-YNj;hJ^qnmg*Wg}?PFAod0lS0#!%=$AKuS3FZ1!G@|9@WsS{Vv zYap`aZc$90-z)bkyF%aB$_^#k1Sf@O$h>demZ0Fn2QV(P8^rH1F%i&BhNH*QjjNI& z^MV-kD}uoTI%>Z;DQ#zbss}sr2h9TMCQQ7u@JK(Gq~1{Y`jwd4U>=@`qIi4vDsD)d zki+WMBzf9ESN9?&yn@Zmzb!e%gbp6*suJi!Q&n`>-xq?AqTxTcQhI9%6zGX>b4`DN zuJwB{|3(eUSf{!WO)>VZywq`tm~MqIU&Pv(t#>N#Z%yNWyE@!Fqlw_K9E7mV@%R2} z;DA^?U;A-(9@Ayo__IfZJDQ`i_U;a!J9R{8|8eoObwJ$IVLaKc(aZSgtN~F`Y8tEQ z6lJSn38{?%<|Mc%g3(v|&^lhO{es$9!^zz`=^D5-VmnLfA)C9x8P5>j*jSWPB9WSy zzwy2=nbQ^&zIW!>DdPKT2UX?=>}A^%-l|O_N-m(Sjp(#nR-qjs$G+FVkCk(Oaz|bt zi>~e{1up%XG>18eQ6p!#JS4Xvzlvo$dK=2#bQhlf?$?szE@|(Uup~nJGpBI8d84v@ zg`Iv*huuu2*{sLtR?f>i^|WGxK}NxQO0^MDo7%2=e0TRpme29|z3$0sB3ftdjn!WV zF|$7FJgA)>VXvoU(`&rqO6@VC zM|lm%Ush`v_?^ow&8)Q@*;myVYR2>)Op;OfKKaph%v@e}WHC}cBKl~zPIG)?=OlmW zPx@4*wF_i+j_Co8?0Bj^PuuvD2F8_8qR;(4OpU1qHTF3i%%qLAd~Y1u;tVTTewQC#NN*BaZIE=Gw+1(C-O@mGDTEHK<#%PogdOPQED|JfN6 z-4;my;AsQoVB@QRK0h$h4Z4tVR6+jy3HvXDUbdp~f2;ujf5up$36^9#;SUeoAK^cSi7l2@5gKT zRTm)#id2c_3?gJM3zuk4lZ=Ir=UE@^ST>5Ly+t~2`74{+wxYYPI5tpdsbwxm)qL=N z#IEop!gs5e`ZEPDL9uk8O}P&poDmvBBf2w9P!CC4Wcy{a?Zz%Cf3cZwm^{ZG| zN_hv=^z_n=*Va!xM3mIpq3quEl`E8cgTtXG$D2$(0#2rlGgr!`l_>2@ns_m$XCDc| z?sa}xtrXrxZ0>5?Ja@uJ=jro$3**3Cgj%ZGRUZ}poq z*7Ca$l571Q?LD>b;wQSqi!&Chql8?zoZ|~|pnwo)eBmxArm-cbZeXI<#{S+x5eb>2 zC+n~(2W4qo?py`3V{^;FBR2!7uy9*yf8rap&w&*Q6p?FISaT^^IhA5mT)8clUnJWn zo&(`eFZHC5;JJHYb8cfuNvYja%a*(rlVt7Bs2+CgLEEukH>I`aFy_#x`f>ep!?t{- zNu@CJZND&tfM-$WWN*WQpK6QC!&GlEHto@JhswxU4;ddr7u7h4rB=f{p4sVKS+*NL zDd-9#Z(wta2jrjG`Zt{XNm;MQxAtsD-X!f)GQ0+iyK;`v1>#LrA3m+;iAXI(-0`ao zlMoLuHq<`sU8lZTIdy5FIaSJ4)>(TjQ({GwUIwYMd=$mrfs4;V47#a;*+7d1v^u|k z|4#7!9dQU<2&ilP^_PVQ``JKf2;WDHbk8iv5@Vwz}BD1)~C&J_CDU` z%f>@mKKiuX8zqAN+>p4 z+9Sg$RI*RqSjnpWi1tC0agtnrYc0f1UDDr@7lj(P z`MoN!WF&48L7lQ6Z`5+In^0t5YCCsPVV9;L@oMFANXDxFD6R7aJ?-`G{WLN*86#+$ z*3KOr?jYye?W!=3vOR5mxnZ4Rv3hjux}7vXSqgJ1MMo35{_lC`6 zu^A6nyZoRe?!Ns2Eb*9OVW#QeOrEyhI7ML4MXPdFtRUp1mJw~%qBDSc>GK?BCDl4w zZn@24gfI`7vO38L+H`x_zS{VF1FA4s?xOrP&qXglGNNC(?zPi30B5FNA=GpK{puYk=(#6 zle-f)ujbDj_k0Y3WrO8OL!t>BiSXaIau7OVh02(Qv2kNP1O0PaMRj98@`GrW-Nt^k z7v`o!2fP<=sJ(o6>b*8F;UoF1+aRmu?e{^bjYL$)UM}pmuDIuuI>wd3R=@NW6BZMGBz=sVMY1Jlg7uY#`Sec8L@tSw zUQx?z`k>7fUU6A~)ApkEpte|YbBE;DJ*S1U?^U2MHCTo8TSThIBpo{FZny;~zdDoj zpV=O{QtL2aCYham@&5&@%F!}~!HTgZk@yJKt zauF4$(Z}v<^U91b<&ScX86ZOUQD6PnUyO8*krwt&{+zclVpxD=y7<~pM;b&FS9q9} z7UoUcNQi_nOJsqnN4QmSmk!o`ayOxq3ToVfQcaJ@%j7piT*TUR9+ZU~m$j6~otT@Nz&! zmF@=0JX%2IRAKgm8j zyu4XdIT$@hMazUG9Tf$7%3j3jpVF05tnH-?3Y6FTA}K11C<3_HXIJ)Yk|hg*T8ryC zmD?6&S~V;aTy$M-{@&pH`|c^n~~4a+a9UQRx-`_jAYzdt#_fXV;=a8~JhWu}6>F*dGP>jI)fU4i15jSE zq=I1ITy&bYL(3V3Me!|KE0x~6?%mHGChvvVqdz9Lj5n!&PTU&7n`CW}{m$ACQU+*D zK6HQa)KD-n7#6nB6v3W2nJd`gy3yeoVZQ&ATu?@XX`)=&dl&G-(Ks1soyd2JTkLXDYmn;@{ zw{utiQe)PgnBAv(C)*$0IGi_UQs^6I;0GPTCslnydi2q}M^0{2(+spi6T;y>l{Jlu zK56#(NegCIN2bw|&LfF_zR$VjjrvomtV^<&>ikk2%_P#&xVmz?DjLj>P73PRU)Qp( z-ZnW;azuIWWFth@PQ9JVC@We92gw;BA+oDI4hhM9op#k3qhQ(qkf9a`Mu7t{c0DE+ z#fA+`Y9x6TsDgj<75;lb1#K%GUi11j<0zc^!DykW^aH%1(AyTx zxWV(hr!=WUad27^flyAr1EWEcs?wmIi%0wAR!YCOCZoYDriDhYZvi~L`!jCZjh;3w zKJhwHNzOf=R2}_jjaE;n-1JOc?lTKnnARi=80lLD9p6hctSg<*^VI)-VRvCudVKN3 zHE$q2OgQ=%0@^Dn)sEPx-z-UT%yD9^0L0Elt<3a0Z9~lapI1)sZKm! ztWLLy63$o8bM(a#w9|LxUfQa1aQfs-vzYY=nk@S&`Ogur?$wJ2*ax@6?`{UTI7>|H zT?4r(RIl-E+7KsYFl8c*VbRw1EfHh)p)c#Vmwc#4?Y_5HX!PDhePDK>Uyjoy?xlEM zEUTL8HlQZQv82$(n`1c=>;s+N;VW0#QS!5@W~OWq)zokEKaF#&^=T+X?c9V_mz*`a z-)ES5lYvX$0NoL&Qy(r+axL(1h!aTHKtgD?N(elYS*xta)<%AY?~g4640|QWu}%zY2{|rj@!D2~l_Ph197lN`( zj#~<8Pu{#~X>DKM=DaeFn}hYMRf)#*PE(SBoKQTm>c`?CB+-SE*UO|BZSNN{>w&mq z>(5=rCWnSSPPONm9NzM#9T}HId((u^pVdXVHdnq}4zS@Z$`wF@Y5^Gl4W}+a8!E(hX%S8ay0+YS zj6X!e(0J$akn`hfz|%UNaHFPp-AOg-P;={<+C|bciH`w=(VGQV`)J0G!t-ha?YCMd z39bR^;=HH6diGa0(0=}E0Rtr$okwxINB1>F7OXcq*w5gl%p(ir*JQnFfQkRZ>nq$i~eN;Y+dccoXz<9;9+}ioP{i{%m-N@vKqU^TpOu+%K8$+Kamk71dx684;-03G;o~QVq;0zJ*iFmWgY5I?O)}1t zbYPeXpbuop0J1Tv3Yd&&K}`Sd*>`M!m>>`r)M3CN6gM4MkHw9PLwbwWp=J8^C^p_nZ6&5B3`Z zJ-qhJ(n!b~GY-#3It~Zb&ZLZ@$K|rQT57hJ-6f&xCzQKf>359#H&jD&bEH|GlGEHD zJ3c{0@wT)bYtgpYlN%n<CWq?X8DBYQt~;B#otjCH5=`g1Uv$x!x=S9s@1gS1goK=tyfZUoEs8yvk544-Ej{R2z>Wc5 z4Zwstz<7k?%@|b`5V>E0+04=aPV3c*qt7&|V!kjn1fDovcg74`7npMr@kQ(?-Rws# zTF=o6BR!SWt=#MK5$VoJy|(178>pyhhWlR@z57om2}u&#nhw8d##)aU!UUh)mTT}t z&e)Y$ZJ=xgvR_=LysrY2*WZW*rvCi(wdU>Q+~_#Wy?<xFaFY#)Z9fp?Sdc$D2pKG2dD}>7-*s+=f}^*E z-6yMCcWgFlW%(x4hix7W-tOT^j=RlKxf|-*CqbNI;4Plppl$R4B1^*_=$Ax2` z$u-`Yn7X7C9QPI$Pq=jGWPHm@#{QL!AO_4eCH!dm^Vhr3+q~^R5>2NIe5N#Ga_?v%T%30AF|*_mKYx4coUL_% ztC2hPl9}FvS4~QZ31WRZI;O<}{_2dBKCkC+D0_ELkA$s&`FFk(p>}4CxhzAT@1U z9=vAt3%${*(KqOpnp$e#jIB2jR$jzpbze%t2K|(x7uvWV86D2ggroxF0eKvr?NU8W zBg=lUiU$3TC{*#S;v)9tw;M}pJ4cr}<+(Fw#p!uN(a|VdVfT>~ByBq_j`pod{oam) zQ+s4vr)-ZIrB{S3VU**f+cpAb5xEWBeRu4=9pB}W$797;GqG3vG`7p2Oo8|FD_#TO zCjk~E9)d26>ZVQ=c_|yeg!O^Gvh00g?Jo|!B^s!XN-(Q_hr6QD*O17%cc`~qSxqhE z+$KW9SNyKSF0Haows;X}>oZzJs8%AVkHUPz#M9+V5F3SVVf99LQtLLgs(N=~nx9-= z5mZ(g-SfD~PNU&`>L-#@ZZ)bn#*CZ}#NFW0NUxH#GzRO5K7YM%C zgh{@@?B=dOXzGy&Lc{0{RZK{zm^+tFiT z#H^ToynjbKtZv%!(n3UPZBKS0OgLFkag}%3ywI_hE|FysdXVD&QS8(`9}&9eF88u^ zk)FvYT-er`gxHKYBkH}J z%*$39onL!`iG$j3oG@mJXSQ_@m3Tw(C}&0mGVrs{HjDck%Y-yhiZ&Q=15qay3t*}@8^kXcfMN0m{Yu{Vxnj(dm0sp z*ZwiC_9mwt1F1%Dcx|OHcAgjS>6is)n#&=glo)!uIBsg&tapQ9)9u` zhsL)1sjx%2r26{0N}0!f6NvC5r9^*SIN3><1m%h66esPi;Mv7f0nQjJjTD!IevaIx zR)yA$3g^5szK6?u;+Fl>u``Pcn)Y(t#V{I~Lh;KhMO(R&4x`?ih<$q-?fVIe`_+|5;_T+xsDM$Oov|+1 zFG#+Vhu9g~$2csbe1A`{Nj_TnQ5>uw?!)sZgkM2vBaQVM7et^NxEMVFv@o1+X0Wkj z6K6&e1E3hfQXvK&+!x!R(YNUh7(S~N_%Y=(?X>yGCS4oRx}oT=xxA?3RV&6+*(a*m z~BngQO&u0F1aZA7=KPWXrluq))qPQ*~@Gi z=bcx&x9MK+smpsjmC_JlUH7M9XJWiWWN!^F;&z7DH$eYL60$v~v}szIz7BzO`R_cL zv36A}O&N!mi(l}LaVzf%b|lNMoi+cco<1C)vHgl3St4jOuWSoyKMudn1jNxI;ulXY{71^y z&n5W;(nGtu$B6DpuH+8FsdK-vpWPVeh4ouz`YU?&lypepY~}@gSguWh926uf4Kz;e zPvlNamI%yJnT~|Qs+m@4Oidj(IFGAyHltyiNV}{dG`TJmiB~~SWhQf_)Elu}Gbamo zi0Jp>Hhi)f<>}uIAvp=-sk9WU&3n(7^wlEHIxhu#w5hud7`J_)uaPM7up zMa!1M8Zwua%$FYBR%PtFmV9&Ns8E+g;U|&O89R z>*5_Fjb!C;HEuiw9he}$BL=Voi34wRJpj2PW#ISB3>IQKX;9K;U>8ec{aUHL)w!?l zQyLOexe*%~>ZzC$^T9IJ$Rp%(J{G<)pw*vT#pTrGL;8AJv)DNdE)>rc6Lsq8NwYRY z?q8a9f_UhrEwK4n(;JbR$tGHyY9PYDo=X@Y)J)KObnF1%Zek2*Z=X7T`Q1Ge>5m=` zT^o+K*}S5rV$d}EbFz8tYvZ0{Xx3|AHSKTN*~Csb@u~n{M&SWAuJ%x~wTK*-@{wY9 z0b7cZk#_H4EA1gI=S8Tj+j*1FsSqt`@nG^Mb9<96JV4Wa-MH`?*!a}}nS?9^m9W8F4qsPOGZ zTL&9`aqoDC#&z*-vol7Bom2Es{zQ7#uX>pNrRe3A@}q)ggDPhDm-TJ6c=w__O~##& zL-`pGfo+5Y!~M7=C!ulQT+4Yam+`8i%G&Jl62=>!?6gQiFGxGjGW$H7GR=5qg)j49 zzo0!Q4G?B+=1xSlfdO?n6~>1k!F+4aipylH!n60st1oeHd3!!^Sg}0ga)}Bf3(Fps z-!|c0-#Vs=jT7};)9p6i8aEv4y!4P-?%ZWENwG;g9Hz#5K1vN^^$&XNjASXUnWl83 zij9-CFRqs33Vr0G3b&jL(hq9M$|&E$9Er)B6I(fg2jEWqJA{HateG^W7Z8PT96kbz02 zq|3kv@Vjp`K$`%IP#VlEQ33h00S)w-*rn2V7MS#65Os!R5pt?RH%3}5aV9aBl)5*D zR`uAWIvbreJbJBU`w(4^usa;mMG3r_d~lq=0{p~g0qDaxBp}--m#%2J?@Kc#7C%1N zUi7zK18Tj^-f|VUSBF z>i#IT>n<9?C;#aX6|H5%ams>Zm31<78ts_2wBpqIvzgG@-FFRCp>?SR`fP<(a=u># z+~HNOaun=CuP=M1EK3ST)U+ME;R1OztyNr*82OZJ*1kYT>Zms_X^Xr zEKqDhHr}*BpYqWNC~G-wufx_=ChW|%r6{09q1TOHt@)PMBO8+&cnIGqY z><4ZJr?=c^lP>CbKlw&v*;HHla1>;e6Q&z%LDd7@6OR53l;tbXdf;14pFI!juEL_4AVYr z`<1ImNX+y`n)kGScGXH+0NdJ^pjE^vb*R3ij?Xn9jcPTEj{ZI4)pUnD*-wv9cBOd#pX3AhjxiPsPev|Y6j>3)_j)yo)o_{i>=<9oRtm8d`w=rkpr;mR ze4tWNlaf$r>hE_IB}H(~D~i`ril0M*^-TEGZb0a{x)!{$*+DX{LfrfRG;t;HP<8MB z5|R|6M79vJG|CdP%v&MJRwCJrB?iM-vV>_>*~(bLgh;ZD>|rc#w(PQveH&zHXzXk6 z?_BTi_xb;ik2^E>o_p>&&-0vfpYtr=wWTDm*4JOtqS9^zVsrvDY3_l;-KN<1^+Mg1 ze$odvtX!@-CZT=zy-3*~s}CaLYSBnT9Q$Fc6#}vV>oJrH>!(7nGYVLAfTEGgjN@X# z9mqH`darUf>zld=*&@QSs+ijB_G3AsTEiQ!!iRSJx~*ZppV_)gvUudOqMdzqtu^v1 zt=Z!xQurBI=hI`GtkyT3%N45$6kzJ9?XCH|f}Nis{#f%#aX;H;NyXif@(B^PcbHCzVqzGBf;^uDQ7@kLDCkeQ>Mj@u`%u z{@YR2bPA==D*5Z3@BRBKiTAtudb8!x{RJ!&U*5)C;~|tyoW;GuU4U%puG`qbL=n8a z-`_R*zM|4FEV)>iBJEQb>`Hd7ua?`iKI1^b@T1w@Z=d|VjNWysTQZ1^5*g^P@{9>A zqTu;vt*v*hpN5ogI<4#pnkrVWL5I2DP)aVZ&*YcfFD&=_RHzePIzQ^>l}OTBrj~Bx z#B8ap8>`g(_$97Vv8_$C-O%___ji9E)lU8NpWpM#{p+U^L72$V0={6h0zvUC%`(qG zaOvGG+aB^Sg~6sM5#n&zb6O(p+2@K&)+k&+dXPiR!*$V=c8ST!EK_^yk*O!anbz$c zeZ8YYmP14Fqk`wPvNFiy=eR6%wK{D-)o`P8=8ro$WMD9Yy4Ld36t{8aZyLf|sxMOiq^}+iuHo;G%2|0I+wh4$u3>%ghr>olys<^bZ|%6)mD01>-P9n3 z500fzE7l|OnuF7A1NowjqIL^(1U>8eCW&Vor_B|8x6}+&fB;>f7lXdi;Y8>aIYP0) zY(kgrf`KtruFnl*-?e6Rz|z9wjKb@6&veV2PVUq|{1xEa`o5@Nr!0Bw9ePQ2H^fx& z4?aw>GyF=GfW{rISp7Vg3Uahuo*h4bK+cT@6#F!f;(3UR!#>OCw7}ubvZxp1slHUd<(|UINrL!F z>oG(@lD9tM_&Bw_CqF?a7=!twpR?g_XL44QIh89FqW5#AocBL%<|xNT3Lg0-Rdp`& zWY63tIg0h1SodzicIQ{J!nE!R(M?scO^v}vycyf;ytS~1a>5J%#D>52tQ=){Ox1ozu&%#NvfmfslT;U32gsy+S_O0 zbyHu1iJs4GG*wFVS~2C}Py1L!pE#8p-}<&lNo(~!p>{T_5{9@TE5sow_Sc@l$1Yv3 zFHCH^z*5i5U`S{5OqQXR8(1to*lVF|Kz|6bVS+@N0C6Ek@XrMY-wB=OG6ohXI8l{!SKf{5Y#+&V zGn;XajUXOY&8v=R-aYan+5Y1~%;fOY2&bR4z5oa^{=RFzh?&{9#&U*lLmy0_!YuB-#%d|pjMmwip`ya^4`dn+Z>yoT@vY{{lIDohg>9>Kf8mWec ziGopQrFZ@bVijjHdh9q_rzU2~PLYI@>}wo}*QbayUMr@*?)&f1Mz1rz+oq_Z&%@Or#o(cGVfMrWd%Q|d8#&InUEjVyaQtQ zZ8wXz4E+4tchuc>8TPZ3-TXOzM{1j z(&piK9q*0Y{Cdvg_S=#A#@TmQo*UgW%#-X_iz?98a1KZ3`@Wl6eAS_{AMg(}Q-{}i zs2(=d_Q~9>uw?ln2>d=nde#@fyFne=(c-#lqBy?A*)-%*y3pkBwJk6nku8U=8~R;S zSY1AS?uhH6Y2yz>yIMk~e9fju>z;waw)G-g(roZ*AHPD~!dTdTHl<3rxYVh{@mH_N zuw~TAoM;yl2}HcoJZD{D4K{>xvMRKAu(^0B7=cZT54~D{-8)q7{F9fptE%K|hr5O3 zALt6Tb7->#((PN{Fe?w0tcWrK<{Ifa`F(tC4)NH;jhj+T>ex;5{s$>fdpt&{eBpt- zzXqaaL(9e@-YR=+6V5mjHgk%lzNN}C$uRf?lI{@R$5iL%JpGfdRMWmd{@$eHVcS4$ zxksg1xg~60^Ip!qVyUNut~;8WGV7RQju2?aJ7YbxpnE=#dXt4nk!+;m2HPK#+7I=j zlEj-$gq?CewHWCLystGOn>hNQe~( zkc5e%&eh`vfBVQ*O%=$geTYRT)MeDXsrJ3h0Iw>b;GljEBTb}XHWHjUNDM-T zvx)3R%>gI72aSBk7_-<~a|bm*+jiLRcQDs;lAYhlcW@W$l=!u!KTg$H63ghwtn0KD zf9}TlEd3mHQMA(@ySN_wIA=3d07cWbo+1klb&lwi#l`o*1!ee<82+5&-k zA%uS*>Ty%?fy30O6y= z7a{Pok{M1jktOay>T*qMyg%bHaeR8?RS1nZjrIMpqVWCaYmT|x3%`cP3gn01cYG!J z`}U`I^|_H#!ot4qx3>-cxfhzzwf}WZF;c_eo69DGQYdI*9rV7fPdRyI#&zS&@^=2E z<@I%ik`IGAoS$3_ zqrQx9+sOB+E0->9_a-{AeV$p~HExqfFDn}qHiU1Hh%AL=)|`M&XZMSasj%8W{}`4*i2axiiv+hQ zFm!_?3;GL4x;t=E&@Bd8R*)Ee0oI1V=V=z3-$E!9V*lXK!-_V1%777b>TgAXTJr+s`F*Xoryc|3^ylWfC1s$OQ4 z3++lkiOJj7bq#^-nU@Biq7Ko4SO z{Ng#vy7Ed*k`BXe`K4?-2G&P!S?vd2tNW$QnPY{j{HbW^P!#hEACu8nHuZ2yScHB1 zij|vkT)SmeMBvGo_D0=-Hn$tacIFE1CE^zmnZHLu7mKB;O2+!dqnuYO*Zr()*Y|>| zyPYsyHSQm;heTdQ{A^1urSSw`m%{;l5FOa2fXU!T}ss{ZmB^<-^BuDxJ z*JM%TQr)#))sV9Wz8`yuEm7S;yx5Jz%bwKy%AWLiy{gLcg@@mE77H30T@1>_NE{jS zsP$5Qgq@^@o(BZn~E)1qfm@yJe3CJmR6#UT3EPt zx<)thE{49jRU#7+m0Bu@u?vyE?T=RKKn^?fm}d8;GjuyQUmn>Ht7Tm-ATvxADJz`L zq}rgANAJ4d@gyV}J<%cNQHE;Ij~=x>YGI$-a{D#8)K!#52u zxwNKxi#VYpvNkq;p3fiz){X)3gRUP+TMvGo^vHUJGA^0o%NOqG=Lca@qNGM_a0U?Px+}ZlPMa?hyo*UiZFb%;)CwJ>iOlDYyLS1k$6+s{MVHTFa$vo9ZAZUaDt| zTVgbt|CFG$#wm_GwAtDs@s7d#%?pUr^MVL=@vhPn_-q&1q$SVjjx)3-L0UmS5b~7AHePe_!^bZHmaK686jMW^ZQld>WsLLTh*1((o5rpA~+`dMhg8au9A@W;n7!Fm1jjsXM$@LwJvY8R(LLj#D1Pc)U%3czV%88*ePndEAU=z z@X+C`cbyg1s?(XHC!Y}>$>LW2WOdIZPy6y^IFjsQU5a~A2-S~!`k73i6j^4q@#poo>}GMoPegrBN1iZ>e|XdAtWiwE{*S$M9)+JU1X_S(*CG$SjO)F97ss{W zYH3Hzo>8uu)I}U(T`nvMZ<`WCPHfFT@cf--Am`Q*!aePtYrDd?q&+&Q7}?Qqa@yGF zh6LE$^P#`)2Re+Nd!@l6B2irDcKLqpddc|@kHT_jcp9g3+~q;VrD>5(X<`dg*dXp4$RL#RQW}gY`RPQ}=wnFP$=t|@R^Q2Q$9vQ#Uk3#%KwO9FXbHl$zB7U}KZXw&B#W9uFoaf{qGShNn; z(z8W4XTEKF|2DE~%~R=QkMi;bnn>d&5g>5l0IG-$c(VY0F~T|(NN7Xc@Ueh>}l5dYW2#L@M`Gr141`nuZx@Eg#+T$;*fB-9MBZl znNOa+4!REO3y=h`Lma`0AY~!p)EpehwTEn&VO^e;4j2jGeJ4y>4sh&xlBG$H69T3L z!`JZY3W=sAI_GBoNL7uJn@ceF&hJW$dT44~RXyt?AIPdDJ+-oLO4v3DDE16~Ik@v9 z`B%(Y?&RK8!lPqJRpF?UXi7jrnBy|qLc~G@Ac#nDSWSD*dMQ6lll=}*o2KE|1tGA| zNr3J`Fe)sdDD=!Qm7$guFc|JU5OI1saQgoW+*`0FKV!O)mU@8x1VAWY>^^u`k_y2# z5O4&);K{*YgS-ehh)V^s@(Hp5iV9GoVBZP^9VoTn7Eq4oN3S!LMmBZDVhii>ak9~! zp|8XS0=LGhhtV_dUV5$jqKC-O*MAnG&ug5dYKG$7v&hc5n=iWhQ{meoUUnWKNnm`2 z=;5?-&;w>h;4}w5oV(264FWnshlQ(YF-Zem3HGUjlmCv1i@EmT3o~@+U@G$+`@^jp zFffdbCYYQFYcwU{Evf>P%lb}7c9@iwsPt;RHjxT_f>A&BV7L_HTvA!a^aXC24(i4= z15Z6z78u~?!+)SB;3>%ePMLpeh5!HOKmH#IB76;80MZN!Kq6)YA56~}4~ZHfKOTTQ zz#=b$j2w&yqGv#Y=zT*WMi#(1&<&Vz2bDlyVC+Ds3zq>R zHaQN^A>bB;4#ev~@>m!kd)Va#5PqSv>=JZHaG9BoKJ~f{BzEvDFcw2$x~r)W1R4T` zTI{!(89pk-lzHHMTxf-8WWph!OZm!wcC&Xr&B{3}^dDojcw_=h;I;s8~Y=2*elL1rvucpe~Y0xu(I7k6Op!TsAZs0u(#;X4>X zBOC`<&j0Hm=p=~o1_dw%G%N|e9b*QduUv+&LDd_Q5H1yLh``_uh6>mEUy)?E1k)Jq zl_A6~1Wv;vguoymmQ*D80tf}KYvA{x$k%d6V@42V{(%AD_tC=_!D({+uMNC26QWQH_Z!VkXz-2j}p3o)$1ePjD) F@ISbAHID!Q literal 0 HcmV?d00001 -- Gitee From 57e4b0c7792fc017d9bb66597a7dc61d92449556 Mon Sep 17 00:00:00 2001 From: cy Date: Wed, 16 Jun 2021 20:29:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=8C=89=E7=85=A7issue=E5=BB=BA=E8=AE=AE?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E4=BA=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chap-5-First-go-application/chapter-5.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/chap-5-First-go-application/chapter-5.md b/chap-5-First-go-application/chapter-5.md index 9454635..a37ba63 100644 --- a/chap-5-First-go-application/chapter-5.md +++ b/chap-5-First-go-application/chapter-5.md @@ -1,6 +1,6 @@ # Chapter 5: 第一个 Go 应用程序 ![5-first-go-app.821f797f](./imgs/5-first-go-app.821f797f.jpg) -## 1 你将在本章中学到什么? +## 1 您将在本章中学到什么? - 用 Go 写简单的程序 - 编译 Go 代码 @@ -26,12 +26,12 @@ $ cd Documents/code $ mkdir dateAndTime ``` ## 5 集成开发环境(IDE) -我们马上就开始写代码。 那么问题来了,编写 Go 代码要使用特定软件吗? 答案是否定的,您可以使用任意的标准文本编辑器编写代码。 市场上有专门为开发人员开发的专用软件。 它们被称为 IDE ,即集成开发环境。 +我们马上就要开始写代码了。 那么问题来了,编写 Go 代码要使用特定软件吗? 答案是否定的,您可以使用任意的标准文本编辑器编写代码。 市场上有专门为开发人员开发的专用软件。 它们被称为 IDE ( Integrited Development Environment, IDE ) ,即集成开发环境。 IDE 提供以下功能: - 保留字的自动着色(语法高亮) -- 代码自动补齐 +- 代码自动补全 - 重构能力 - ... @@ -57,7 +57,7 @@ func main() { ``` ### 6.1 代码解释 -- 第一行在 Go 中是强制性的。在所有文件中,您必须添加包声明。这种声明由关键字 package 和包的名称组成。 +- 第一行在 Go 中是强制性的。在所有文件中,您必须添加包( package )声明。这种声明由关键字 package 和包的名称组成。 - 在第二行,另一个关键字 import 的后面通常跟一个左括号和程序导入包的列表。每个包都写在一个新行上。每个包都有一个由双引号分隔的名称。这里我们的应用程序依赖两个包: @@ -74,7 +74,7 @@ func main() { - 第一条语句的作用是赋值。我们初始化变量 "now" ,并赋予它从包 time 中调用 Now() 函数所返回的值。 - 第二条语句的作用是调用 fmt 包中的 Print 函数 -- 警告!与其他程序有所区别的是,请确保您真的要使用这个包才导入它。当你使用未导入的包时,你的 Go 程序将无法编译,但是如果您导入了包却没有使用这个包时,Go程序同样无法编译。 +- 警告!与其他程序有所区别的是,请确保您真的要使用这个包才导入它。当您使用未导入的包时,您的 Go 程序将无法编译,但是如果您导入了包却没有使用这个包时,Go程序同样无法编译。 ```golang // 不要编译这段代码 @@ -110,7 +110,7 @@ total 4160 -rw-r--r-- 1 maximilienandile staff 94B Aug 16 11:00 main.go ``` -使用命令 ls 你可以看到该目录下有两个文件。( Windows 用户,请使用命令 dir): +使用命令 ls 您可以看到该目录下有两个文件。( Windows 用户,请使用命令 dir): - 可执行文件 main 的体积为 2.0 MB。 - 源文件 main.go 的体积仅为 94 B。 @@ -122,7 +122,7 @@ $ ./main 2019-08-16 11:45:44.435637 +0200 CEST m=+0.000263533 ``` -祝贺你完成了第一个 Go 应用程序! +祝贺您完成了第一个 Go 应用程序! ## 8 自我测试 ### 8.1 问题 @@ -172,7 +172,7 @@ func main() { 注意事项: -- 在这里你可以看到我们只使用了一个导入包,所以导入部分发生了变化; 只导入一个包时不需要括号。 +- 在这里您可以看到我们只使用了一个导入包,所以导入部分发生了变化; 只导入一个包时不需要括号。 - main 函数里面有一条语句。 -- Gitee From 2557f98fed9347233ee4d70fa5965ed3ff55f23d Mon Sep 17 00:00:00 2001 From: cy Date: Thu, 17 Jun 2021 09:31:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chap-5-First-go-application/chapter-5.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chap-5-First-go-application/chapter-5.md b/chap-5-First-go-application/chapter-5.md index a37ba63..4351165 100644 --- a/chap-5-First-go-application/chapter-5.md +++ b/chap-5-First-go-application/chapter-5.md @@ -35,7 +35,7 @@ IDE 提供以下功能: - 重构能力 - ... -市场上有很多 IDE 可供购买和使用。 您可以通过搜索引擎找到适合您的IDE。 笔者使用 IntelliJ 公司开发的 Goland 。 +市场上有很多 IDE 可供购买和使用。 您可以通过搜索引擎找到适合您的 IDE 。 笔者使用 IntelliJ 公司开发的 Goland 。 这个软件并不免费(需订阅),但功能强大易用。 ## 6 源文件 @@ -74,7 +74,7 @@ func main() { - 第一条语句的作用是赋值。我们初始化变量 "now" ,并赋予它从包 time 中调用 Now() 函数所返回的值。 - 第二条语句的作用是调用 fmt 包中的 Print 函数 -- 警告!与其他程序有所区别的是,请确保您真的要使用这个包才导入它。当您使用未导入的包时,您的 Go 程序将无法编译,但是如果您导入了包却没有使用这个包时,Go程序同样无法编译。 +- 警告!与其他程序有所区别的是,请确保您真的要使用这个包才导入它。当您使用未导入的包时,您的 Go 程序将无法编译,但是如果您导入了包却没有使用这个包时,Go 程序同样无法编译。 ```golang // 不要编译这段代码 @@ -92,7 +92,7 @@ func main(){ ``` ### 6.2 关于 main 函数 -main 函数是程序的入口。 在每个应用程序中至少要有一个 main 函数。 程序将从main函数的第一条语句开始运行。 (请注意,在 C、C++、Java 中,同样存在 main 函数的概念)。 +main 函数是程序的入口。 在每个应用程序中至少要有一个 main 函数。 程序将从 main 函数的第一条语句开始运行。 (请注意,在 C、C++、Java 中,同样存在 main 函数的概念)。 ## 7 编译 现在源代码已经可以被编译成二进制程序了,为此我们需要使用 Go 的一些工具,打开命令框,输入如下的指令 @@ -204,7 +204,7 @@ func main() { - 可执行文件的创建过程称为“编译”。 -- 要编译程序,请在终端中键入以下命令 +- 要编译程序,请在终端中输入以下命令 ``` $ go build main.go ``` -- Gitee