From edcba4cba7b106a05be2bf8951578bc1d8a9a9dc Mon Sep 17 00:00:00 2001 From: chai2010 Date: Wed, 25 Jul 2018 06:57:04 +0800 Subject: [PATCH] =?UTF-8?q?ch1-03:=20=E6=9B=B4=E6=96=B0=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch1-basic/ch1-03-array-string-and-slice.md | 4 ++-- images/ch1-03-string-1.ditaa.png | Bin 0 -> 6182 bytes images/ch1-03-string-1.ditaa.txt | 14 ++++++++++++++ images/ch1-03-string-1.png | Bin 6235 -> 0 bytes images/ch1-03-string-2.ditaa.png | Bin 0 -> 4186 bytes images/ch1-03-string-2.ditaa.txt | 5 +++++ images/ch1-03-string-2.png | Bin 9777 -> 0 bytes 7 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 images/ch1-03-string-1.ditaa.png create mode 100644 images/ch1-03-string-1.ditaa.txt delete mode 100644 images/ch1-03-string-1.png create mode 100644 images/ch1-03-string-2.ditaa.png create mode 100644 images/ch1-03-string-2.ditaa.txt delete mode 100644 images/ch1-03-string-2.png diff --git a/ch1-basic/ch1-03-array-string-and-slice.md b/ch1-basic/ch1-03-array-string-and-slice.md index 5bd01be..ae914d6 100644 --- a/ch1-basic/ch1-03-array-string-and-slice.md +++ b/ch1-basic/ch1-03-array-string-and-slice.md @@ -158,7 +158,7 @@ type StringHeader struct { 我们可以看看字符串“Hello, world”本身对应的内存结构: -![](../images/ch1-03-string-1.png) +![](../images/ch1-03-string-1.ditaa.png) 分析可以发现,“Hello, world”字符串底层数据和以下数组是完全一致的: @@ -208,7 +208,7 @@ fmt.Println("\xe7\x95\x8c") // 打印: 界 下图展示了“Hello, 世界”字符串的内存结构布局: -![](../images/ch1-03-string-2.png) +![](../images/ch1-03-string-2.ditaa.png) Go语言的字符串中可以存放任意的二进制字节序列,而且即使是UTF8字符序列也可能会遇到坏的编码。如果遇到一个错误的UTF8编码输入,将生成一个特别的Unicode字符‘\uFFFD’,这个字符在不同的软件中的显示效果可能不太一样,在印刷中这个符号通常是一个黑色六角形或钻石形状,里面包含一个白色的问号‘�’。 diff --git a/images/ch1-03-string-1.ditaa.png b/images/ch1-03-string-1.ditaa.png new file mode 100644 index 0000000000000000000000000000000000000000..6d4ad18bbdf98cb6c5992dd015fcc9d12ff9395e GIT binary patch literal 6182 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 baP51g8&^%e<;TIm9dhR6xf40ZuHO1LD==b! literal 0 HcmV?d00001 diff --git a/images/ch1-03-string-1.ditaa.txt b/images/ch1-03-string-1.ditaa.txt new file mode 100644 index 0000000..9f3223f --- /dev/null +++ b/images/ch1-03-string-1.ditaa.txt @@ -0,0 +1,14 @@ + hello, world ++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ +| ... | h | e | l | l | o | , | | w | o | r | l | d | ... | ++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + ^ ^ + | | + +-----------=-+ : + | | | ++-----+---+ +---+----+ +---+----+ +| data | | data | | data | ++---------+ +--------+ +--------+ +| len: 12 | | len: 5 | | len: 5 | ++---------+ +--------+ +--------+ +hello, world hello world diff --git a/images/ch1-03-string-1.png b/images/ch1-03-string-1.png deleted file mode 100644 index ca4b0db9761af31a325914779d46fa069a6ccf5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6235 zcmeHLXEdB$*Cx6|8@+~ck0?R(PQ;BFz1I;$89j&yAtVI3i89(~Ax4zwo#^EW2||SE zJjm!JYJ!Nop7s9w-ap@u@7K59v(`T6tn2Kv_d5IRYn{CgWMrUCL(M@=L_|b`LV_kl zL|4Gec_$^wWiNOnm3=voV$}83iHK?vubw-S5fPCP8R?m65)%_MGBOGX2*}CFX=`hn zo1443x;}dJC^|YiJw3goq@=#SzQ4bJdU~2bAY5ErT-y0>`)>sP-$Y=qF3aNbFjT%s z>jy+cv~B+gaax-{>JnrR(6kCLz3&?E$kE@0$jH&%CqT?V(~LJzN=!yfUQX$$9T5@J z5DHW`3%a}W3Tnj5)8E$kLALzokGCZPi{OPv?DV!^iZoXoDRExTj&cz}jL9#8IR6hM zdj}TW@vKOQ)3aJ%DQ!|FOJ9kb`HgpHqf4((h zr>GI~jk->9rL=fvS)LE9tipG(>(64GrlP+E_YF=^Cui0++<9P@#Kq|1N!IN(ZR0pt zHE(4qYjI02y@Hwafs1F9s5-T6gfj{+gM=r$F(731LX`@;;C0v zAz<>r5JmcIr&KKm^?YroOikGkPGu=lyAdCr3+gv-*p?VHcie*wmzRlcq2ZJda5-F4 z2yFl7^NQ_jRZ~Yp7?{LPPDP-iA)a8!{B;cl@U2l+9^`l26GGm5d=!;RdGS`V-40e5 z)Rqel5RDbsYr?%#%^Ims_26xILqzF;k~0o;PaH)3g^}K>VO=Mb2T`_soIZfs^}CVFnU zfY~IXc=<@BeOwCi;YmIhmUV@()0ioJ0(zbVJbAxqdQE3S_9oKV_3fM(g!j3hANw>D zWFtPV!N5+f@pZh$u}?QmM&Mn#+@Fpt$`JlV=W?szE*RY*gpC8AQg&U^t54IgH}61W zi%H*NFwX0vk}FKK=HF&;RyC@owkE=*&8vbpL(EpBx*)>2kra|LZM1MG7qLy;Xe32R88=!i4qfJT z<9QZFf7(XOSmf1+-cQ0ItIVU~dtGwG~+DiSPwx+M>l`7{Yw|+#a&+K^~(%MDs zz}knR52*d93{sKDEavTR!s7Q{3;MAeq`H+TC})Acw2e47t;4ep0skjoYiCX5I&K-M z2-~u*C_|*^ou%xn(g7u27|(ixEt#tZ^k+U z^Y_Z@Oy{KdO~c5IDc?sNZP0y@?B&dvT<*yU@GE#hJn&U=Q6pp|U=rOHaX|0w)AsIb z!G6_y6s&=P@N9s6d?3J$&o*vSj9Ho7hbM{BzH%^l`lWaUKe0(bGhKM|C(FuIm(&c5TtWt|hz4xt3th{cZVg!*;Z2XkOYXn%lEoqW<#IYTqp{t^lJx zTB{|VO${oMz>K~W!SU_K^+$YApwweDOZdqs`{gzllPXrr@3T$RsCwKjo*s`dMKylt zhorO>30CH4>RU^W0E3vOghSJ{icVo*^ls_t^{nfaD=AV93Z(e{J+X@1@^*gNy>rR-<4A6SxjfO5Ti<>H%Prn{3$`QH>l)5e zp;WKcbZws8REK>+D3)kqHc&B6UKxZXarzV?<38IYw7MdPo`_}(V=QR#A{xj-5v)xs z?3=E(O7ofAU>ge;GSoF6NKkL+YT)o7uUuLv6ce+C3uz$Z(kc$($UMdAN|5o78RPwE zoNDiyo`x*()v}%FJBYA8N=oms_G?o~21WaLE;#~AM)mL?3YQf+!{gG1U%pydH0H;6E`?w3qZE1hF)m`j1uAW@Wj$$6 zEjhk;8pk>LYxR+VdPiTzXW7sPSp?EfnVv%TQr}PeI{0*TiH%@=f?QqQ&rIcBdvdUc ziE44+?7JD2p@zoY2^qAEuht`|-i^acKLt%aFg%>>c5p2`YB>8Y!X5p~TXUEGzJ$4y z#uw#uu!V-mCxm|6Jp+Y*vW^>AwX3EcoSjB^|DODK!~%?}5)vw3O2~`q)&>Y=BJoe8 ze|-~eTrhC)x3@b9qeayxl005DbU7Oo!-B2y{?rsnAFm+TBkZ@zAk;d-2g&-yf+-y}H*`r! zgDpC3lie7Lkz8j1&g?HsSj+(($cHJhuaL)jaq*)-MjOyBQC=yP&#h|dC$_zCQ-lCeSLJ?lS zCbn-fic8;jHQ8#9R^f<#bzc2#dYQL>JXhJK#=i`F_))&^{NwLqp^KBH3w}sCM;7UP zIK4)pw8X;qRlh*Z=fJr5px(^@kD=3>OFJ!Sp z_vml$)DMO}k3;h&=SVP3EJNE%DV20E6njBLZ|`)Iua8~-ofyTS=JqcJ=jwE&Ik$dt ztAy*px!(JZ4BwRHNvM^|U3Qk3@SQdw*g?^T2lCybdn@&RYV9Bc^E(X2J+z-!!?J&g z6j_=SvbB|ndfw}7gg21YkBx+5zwLz;Qas!s9_MVd!`Fs|?hY%blpGq;xF_a1)Z+x_ z^#zR;f2re3_VR^&RPX`!-eCgO1hFwyerA!JfQMg94oo!Vuuhe4Mhu(8RbWH?Y7lJ- z=@p!eabUMK!mpV^yh@R1uVfhei;Uw`%E=zG-6;I^6y!(S7&;TqM{!pWUpDUHErXeb z1*MlLr0`f*CR1BPgp<~Z-;hEp(-&{TBoZ~0-1Dm}0eGv^VZKG@&d&DvFkw<9Cm+E!iR-Z*&@B&W-7k)`E2f&Tb z)-FCeWl_AJeRU0HJwZu=5$6yy(IN2KT*=|OuNT{^O}1rQ{5o(p`_Kv2J)bu?EI%cz zZB&|=8tzxnR(XgA@3;|>NTgAwWEjN+M$ZfUupozC2WHv-svEJbiC6HKl?Bgp!2Ufv zSbEgT(8H#)A}o+nR7lRs#27*_n*u zVEUm-dfxl(LdO+=Hu6sdSeSNUbgSTuiF36+_?iEem;(~n#(s6LhQoEciEmSz)>1ry zL6p+FUaWbdjNGlEifNbhl7UvGPCH3Z^-vYIq#?$EP26_E$BiNA%D<5#UWHU|L%0Pm zB)cyI<2K9wp_lqk9T3ZppjP;^=PK!PVFB?R8;8XkXO`GB-lw~d8drR6u?j*n8LNnj zD*M?Y!+XI`u$A7wh`teG?6U6`DW_BJ63zx6>ab$E8`yqkbVh?`$E#xRqv-QeN}PB? zcE@{-@bnug7Tb^E&fr*6rUM1H5KB6}jV>fW5}k|Zd^YN3OwPsZzcvOto;+Jj6?~`_ zOx6*wmUqM0ISJRhwM}vFln|_)r5WwREQn1nR9eUog{^p%_WE5veR9@>XLgqc7Zkji zRYi>DcwRk-1|>e()6^JSL=BFi#cNIuLx9cl%%MC+9A?bXyKAv_cx|Kej*x{JOkF0( z=aC*=9DJRjqFc&i*6nbF39{KTg1;bB4XHjt<3B|GrOI|KIqRq}d|XhuMCxwGMjb4k zCnN`sz0Zq_ZR#p?GpR~plGCl%`*_-dRsteSYg0(3zgh$fIA>|1sYDd|y3FAH^||)g zIYTbsxe+IqJqAeC`GWWe+vr=5Nkru7KBwqbrViOeDm&nC@!4a#skQY=t-y>qC8))i zoWsXJU^m*7+IUl~Esth8U9?pE)}BKnI>l$aJF5yW65Dn+B1Citv7$&=>3Y%>4-61J zoyh40riq6f!wAuVsIrXL6sL44AhGVdw_^ve5kyb_8PA>PovQ3e)cAUde8opNV1Z^xt!({5tC|jk0NxzX3TB!ep_} z>|EfztmG3xkwb|VfaKd19*t%ceB-&~%<7ZxFa#}j{h~M$JY*bjhR_dts&vOWBAe*v z*sSi)YJ?zhVpR=%D9z%-B)2ej?I91z5a3EtWTDBk=>mXFoLLhe zLU*i#Po-EBmFb|UU$x`cpuV+hih6E0*P9?|{Fmydy*}yut;Gi1x_WnuXQ7wUIm@v3 z(F1W^0*6yg{B6$SrE?nO^GE2^i52VD*JU;P2}V4<;nkpb8L4cmpS*SuH(-)TJz*1b zD{sXy1{@BS!;V%4Rtmx9n|*n>wr+0I9+x}hE7Mrs@mu>c(?7PnVa7Q-<^n*H3d zKFPVq2ARtFIX(HX!m)_k4~0MNE-X{&oOAzjYxraEpc2D3#fP2LF$8xkFpBSCZ(`VD zSq|o3e0)4`?7vI#w~~1>uR?lBq}`P;?$jQ6x)qM%&WM5r9qpg%nCrR$OjSCmUu;qZ zZ7RNSTP>@wA+{C`-sz_PRFhXyiheacO;vxW)!QCg1=c(}cSwbu_C<|XcHRjr;er60 zUa_?sttYCGFK^i7`b|><$Rw#cURcieB&Iko1@BJ|j22(6@>a>xu#Kq)XWf8+rX;8A zzRmM%euatJWicNCB;Ig83Z`j9eqB!;TRnLBHgEpVLUc*<%U)WVYS6++AQLi4%C4k@o8_&7Pp(vnKhUGF}19^*4>|7f@oQ(EQ~Qp zXdAZFVH#xT`mj|P)e>*G*1uu=eUKwQXUMiBO~?C-{4=c!!b4ZsZ}AQje3iq35jq!~ z&%?Au3+*&V_05^qk5hMEO`XY5n9W>ibb-c7sX)>A&vu;PPIM}N3V0Q*hvx(U77sIHPl1PBGc2Zx$5*5a zYUw^y%b&hA75FYIYNhQxaOLtYVU}3RloaU?qHJ6!7QX=5)K{%X)WuWN%ERRtN3`{f zh+)c?VlY_lq#3Zh^lgbHh z=N8U%z1v8Da+x^oUa{iOgTSjhI6Yz)KI9=qM*K;3GY+h#>+q}t8 zq%^jD^L?aYR4$+X05keEPVmzidFu0ZkLhU%G>Gq#@UhZcQQ@*(z|qx#CxN<|$eMC9 zapQKp7^=QY6NnuW*|n|=#*5AZ2ktKAeisYYIiqzr%7kpW-K5KG0`Z)T-ITOZ97g0f z3d#W3D$D7~S^s#R1P&^aNWvY7!7^b>c3G}eybw!sESRIN&rBHA^Ycm;hmrBUUVZlJ zi?bB_qvkoGPt=GpD+1g&kN%jE!(JVp-q+0aqWJ}Q5}@++*37wYH6R`wAm$a&k!?_5 zy;`0Ji~PB9*b4qU+D=#Ncmei5pn+(M#H}XLx8XRg8(cc>e|QDh(s5Txsy|%>2Xtt` tmrZXQ*f$C&p9Eb681`lVmm<(Kt9F#yjK0r$Ciu_yE=tn?ti0n8@h`lsE0X{K diff --git a/images/ch1-03-string-2.ditaa.png b/images/ch1-03-string-2.ditaa.png new file mode 100644 index 0000000000000000000000000000000000000000..9871755a24617ca9d2e6bc54182e122d795884f7 GIT binary patch literal 4186 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 literal 0 HcmV?d00001 diff --git a/images/ch1-03-string-2.ditaa.txt b/images/ch1-03-string-2.ditaa.txt new file mode 100644 index 0000000..812b4e4 --- /dev/null +++ b/images/ch1-03-string-2.ditaa.txt @@ -0,0 +1,5 @@ ++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ +| ... | h | e | l | l | o | , | | E4 | B8 | 96 | E7 | 95 | 8C | ... | ++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + + |<-------=- UTF8 Encoding -=-------->| diff --git a/images/ch1-03-string-2.png b/images/ch1-03-string-2.png deleted file mode 100644 index 64916ebb0e193cffbadddca8e4e6a7054ba0e302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9777 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