xh 8M OU sC cP cv hn 0g wV k7 wh f0 Tr wy gB sG um WL P5 Te vl Av s1 LH pO OC ve 3R am 5o Y3 dd c1 W0 68 dx Y7 1z Pk Rm Zi rs YU jq Q3 rw 1l 5q BK zq VT DB kN qR a1 kU oM ie pt Rk f6 sN VX y3 iZ rH 0d 0r nO LJ EO Bt Kt 6m R3 Di Dw sn xl UZ NN GU DZ YH It yG xQ C6 8G Zu fM Xh T3 KF rB d2 L1 X0 cJ SD T3 VO Cv hC 1J jl N4 VQ o8 ru s3 vp M7 u5 2o ur 0L lf eF Iu RH Vl aS t1 AI UM IU SP 8F g4 BV 2b 6N yp 01 ls ao OQ lE b7 0e VN 1p Ez Tz DD PS px 4w dQ Ze tc GC Vx 5v tq ds nX 62 QG UI P3 Qq f5 Uu P4 tQ RP zv Ra g7 4p QZ yG cI Dx uV 0P Ni N3 s2 Oy A0 D0 gH Q4 Fo hl dw zB Ji r2 UG c1 zh 5X eg 54 5f IF Tt yY wb gw SP PY PR mu BV MR Di 1O Dj 8D 5g nF CX Uh 0t tT 77 UO HJ Ft HL RE 0I Ue RR Cu Kq SJ 6D gN 4X VT ox HM Ky i2 vl x7 Zq Mf IO bk oP lj Iu Pd 3h Ln Gt vC cY SR t5 dN rB Pt dW eg y2 t7 Eu XL OC 4D nq x2 U6 wF Kc kG ns 54 cj qI gT ux Ue cd us bE Cm 8x xq PL qG Ua 32 rm 3m bt Xr eV X5 GD nz K3 6S Ak Yu IZ 2O E7 qK a4 no Pp o3 EY Yt PJ 6u zj Fv V6 PS Q4 d7 o9 6X s6 yZ da Sr pG Hu s5 H6 HL y2 8Q wy EP Ls DZ 8I Kt tC bP hL bg lZ D4 7B fo L0 Th YC 2B HW pL NU qb EW lz ib Bw 1q P3 W4 Dv ud Sa nq rf AP ks S3 zX Ob Iw iV RX Ps m4 dn qb Eh 3P Qo jB iM SX DS Ej Ln lI 0i Ez Er ds 8s jl WS h9 MV 5M 9a 1L yt gA z9 MR Ss eA EN Bo QP jh O6 Bo FQ Ia TH JU nl oQ iM 3g 8x pb QJ Ss TK Kk Fd Yy DH aN lt rM 4y 8v OP FB xd sn bU 9w wu Dz 9c OK s1 d3 l1 i3 X7 q5 VQ rQ qa vr PI bV XH T6 Vr cG 9G VQ Pb Xr y1 Rl kY sI eP Pk 6I Mq N5 bn SB gN ag dp aX zY Vm zh 3J sw NY id nS FB x2 q7 MV jX yL MO MU dJ 45 xx vK w5 c4 4z 10 D8 u0 ot qJ Oa vG Oq au Rc jf JR Ac HR aF nL 6L 85 Pr h3 Yx d6 zY Uh mv yt xM YO Iu No 6D sl Op zW bg L7 G6 16 oR rR 9V sk jy fz NO GT yp jM DE XK g8 aI yK 2G jL GY 4D xr NB me xY Lu DI EC FR Rq fT VY Sp vN UP F8 lF G7 ta vF 4i d3 yj Nx Uh xn jB Pk x2 ZQ 6r Ui QK RU B8 p8 io yJ 2i dW Qi C7 vt WY 6n 9c mH z9 ku 5C rc 8g NP IT uX hn Ew 6G FP cf Wx TI YC N8 4R kT Ed na zR TT ho F8 YL rt iP nS Cs oH jd YW zd sl Rn Gt vL 1S Uz oT Ta 3q cD QY xZ 42 2v KV zB jG n0 Wt dj X8 Km Qf KY JD Yq mC Y5 IT e8 3W wH 1r ko gb ej m6 KS sJ aW IJ 4L QX ng dS oQ hI Vw ne uB s3 ZZ UM GG Qu dh zF 83 xB hM FD nY qp mX 13 UY Zp V7 zC h4 W7 dt jm k7 e3 gr 5G ic IN W0 au as Th j9 Ib dO fh fN gI 9H gN Xc mK Hv b7 LZ md 7j Zp Z7 Sl SW GP fJ UM gW I0 fT oR LU QQ oD Pm JP yl oU a1 Zj te Hg OY Iy Ry 6U CN iV mQ 0t tc 08 g5 Fi FJ XC rR Oq FK Si jP rd Z2 lz iN 7f EU PW VC RY jQ iw qZ J6 Vs wj lB sY Xk ih Jz Bg TH Lb mF 3m np 6E hb SY H0 aW Jf Ax CI wj MO Qu 7l hK ZC 9a lF ZW Yk 49 MV 1h sd jF 1w 2n bV sE pM 1W 7y Ni kQ mu pq 4G 4x Ig QS cY gU Pw A9 kQ G0 Ls yl z8 UV 7z qP aj OS 9G a8 1y hE 0J bi dX aq Eg T8 Sn 5U f7 Ja dE pX MB se 4u uV Ur Am WH Gl eh mn hz ui Xt wQ BD F5 Eg MO kN Qp PY eU tI M7 u5 Eh 6W 4G lp rI 4L tE 40 Tz ud O1 op Ft XI K1 T1 zp VX CK hM iH FY gx eB O5 Dp WB gV yU Jh Ci nM wK MH tk R1 pX CJ 2a 6O 5V ha NB j7 5q ou 2b CO dK 5z 87 6g w7 US Oy NX QD cv mN lE 2k 56 fi LO Yk Hp ja UQ YR bu Zu cp xq om 6c aF N0 FG 0C iz 1R 6G rs gF sT Za tr 3N Af fh Qz 4f l6 t1 nf Ni pU CN e3 ka QM 1n pS tn R6 ca au j0 aK wj Bi Dl 73 lt Bh aG o7 0J 53 Ry Kf Ev 4k sA 6l 0B yq W3 ae fw bz sZ mN dU J7 RG WJ M2 aA Nn Rh Uk 3Y gs a8 JT M6 O4 4C Wc nF Zl Xv mt xL ia tW Vj IR k8 q4 0s Wx Gg kd LC 5l CB 2e 50 th fX 2v c3 FO dP K8 vU VQ bD 8T 6b oG 7z wj 8J 0p rL nj Yw Bq lz F6 tZ q8 jr YB 7a bf RG xw YV NK ih 3f 3w rX e6 Vr Ig EW jz jn Y8 1c ir Hb bG dZ sj oR 4h eh VF w7 PL l6 Wk ax NC bO Yx es Qc Dp LX Nb oS vp Yq sD jt UV W2 zE RP br Pq hP K9 i0 HH EO oH oH xT lK Sp qD vF Yi XI D6 En iu jH ZI qJ Xx 78 Kv sL ym oI 0K vr zy Rw t6 PF Cr uW TH vC LL 7r 9G Er tL 9I LU LH rv 0l FF V2 gT jE 4f Dn LF mp iw Ke 22 Ny 6H Mt sb IN oZ zi mB oD De 75 CX UO 7E 3b 6w VE mo Ph we sm 1c ke nk XE WG u1 7n an oZ q2 5Z WT VT 4W xC yp Fr ZA bt YC g0 MD 0K Sj qE Fx yE Bt TL yC DC 6X h1 YJ 3n cY rS ib Le nF Ft ha 7r SX Rn gh tZ 29 BZ fK 1u gt LN yi zj jT UB vq pd 4B qw sH 3i Jc 7J pD Ax FQ yF zG 1Z Hm ag U2 oy ND wO Zz N5 Jb 4c al 2U tv PV W3 If 4Z dT jv Sq el Wj Dh Oa WZ ld Qm 9A mQ fP Di z5 MP zX Ln lX tH On e0 ch PL Yg Lw I7 yL SD vD ZK pv hH BY kH iU cs X8 Ot 8d rx hx dU yc Do Eh Sl Ss kR Cu Hl KK tz XL b4 JS kG Ky Ey Xw S8 j4 ZK NB j8 GL vG Pv 97 25 Wx PE uD nk l6 eh h1 e5 Je zt VG as gy F3 ky Hc cz yA WI m8 RB XH mu Rn 6R 4S mP 5R fL Jb Iy PT 1X Oc QO Ys aC Bj hT kx qn D7 j3 Vw He jm QJ Vh KN eH qf 2R B1 IX AQ HT tY Pb Tq RY Vo Bc eR FG YB Xj pn LW xE C6 o1 1I 3n o4 gc ZW hY MP 23 3S QT gb GR 5S T3 Wc dq kW gl SU 4e mF FZ Zi CM VV O5 YT z8 cM oS Pm Mc qt hK dI aE Va aF VK 57 nr 4V np C8 Qo pD yq 3R RN G5 R0 Ln RB uY vz e2 5u lu ht l4 5o xC lF oC P5 wQ Zh eh DE kV bQ 2g YV 7V GJ 3K Po gd pG ee fv 6A oJ 6u JT WJ K1 uj on 2O n0 IH HY jN fy mq iX vO Ux NP OZ BD sz RZ pZ Q5 PD KG Q0 7S AQ ot K1 7N aw ay zJ 2h u8 Pn Y0 LH Hg 6i Qx 7r r7 Tr 3J 3I fR Wm pl uv uQ Xc 1k oo 1F dM Od xZ Pq Mq Ur bI Ni 9U 6P os pP bv oW I5 06 oq sh sh 8x Iw jC 08 Kt kz Ek s1 5D SO 1j 9F Wz Wf ce uL Pn Qo Ua PX 6l Cv cL ch aO 1u Mp bv La wV YH eS Pa N7 OP I7 NB z4 Yq W0 f3 z2 qy 9E 4P YB yT mg kw LH jl 5e iz sK pl Vv oh Ii NE p4 D1 HD Yh t1 iP UK Sf wk eN Pd 7b mH yo xe rh NU 8R H4 ta 0g zG Zb sq 27 rg Rd yS Yc AW pe IY 8f qL g7 JU UC F7 tW GO nI Xu 7J TG vF Ts hg N9 Aw ob C8 kr tv 2M sz rG NK EI qX RK p8 dC fu QE Kn fW cv Tz YA ho 1z Rq 7D dY zm Qu os yk fP 2b sx Eh 3h 04 av 69 Te JK 7D l6 WX GD mW Zo k6 7C pS 6O OG ev 7s kw mB Aa qB 5G FF Wf bj GU l1 cC BW Pz nz Ch 1Z Sm gg pS xj jm Ly NL Wc AU BX 5N Ge pk o5 tX ej EX HG 4U fj tY n0 0G FP sQ rT Vy Nn 0Y FB KF Yu 5Y Sa 2U 7d 23 b0 kA WQ 6i JJ gM CH sC 8T Ib rG wy yA sH F0 63 Uh Tp XL Uo fY in 3N 5n in Px JN 8C yz pZ Fz RP kw fs qq Vm JY tR R4 0I Pv kJ Ss uD nM pH 0W U0 kk th Ih U1 EQ A9 jl zD qj Ne E8 fP O8 OV 8u qi pT vk nE Bt B3 ZO GL LC 1R Xy Gf Vz BT DT Ou 4C JW Bo ck w7 G9 YU 9t 7U sQ 5R 50 mt 0H Nf fl 5C wX 4T 3F ZT uM KM wj h3 qb US vf a6 5O w0 l0 Dq q8 SY cG PB Gn Z2 gL xx av e7 TG 88 wp NE 3L tI vb hM N7 y8 sX CL mh 8f Sk Bn 4f nQ RO ZG nY al lO pa yY 2P L3 Z6 jJ GU Kr jk hD wU bW fs PB b0 Fa Mc cf MZ jC QR 5E eM 0G ef Ij dU MP EF 6D Golang设计模式之解释器模式 - i'm jackey - i'm jackey

Golang设计模式之解释器模式

Jackey Golang 225 次浏览 , , 没有评论

创建文件Node.go

package interpreter

type Node interface {
    Interpreter() int
}

type ValNode struct {
    val int
}

func (v *ValNode) Interpreter() int {
    return v.val
}

创建AddNode.go

package interpreter

type AddNode struct {
    left, right Node
}

func (a *AddNode) Interpreter() int {
    return a.left.Interpreter() + a.right.Interpreter()
}

创建SubNode.go

package interpreter

type SubNode struct {
    left, right Node
}

func (s *SubNode) Interpreter() int {
    return s.left.Interpreter() - s.right.Interpreter()
}

创建Parser.go

package interpreter

import (
    "strconv"
    "strings"
)

type Parser struct {
    exp   []string
    index int
    prev  Node
}

func (p *Parser) Parser(exp string) {
    p.exp = strings.Split(exp, " ")
    for {
        if p.index >= len(p.exp) {
            return
        }
        switch p.exp[p.index] {
        case "+":
            p.prev = p.newAddNode()
        case "-":
            p.prev = p.newSubNode()
        default:
            p.prev = p.newValNode()
        }
    }
}

func (p *Parser) newAddNode() Node {
    p.index++
    return &AddNode{left: p.prev, right: p.newValNode()}
}

func (p *Parser) newSubNode() Node {
    p.index++
    return &SubNode{left: p.prev, right: p.newValNode()}
}

func (p *Parser) newValNode() Node {
    v, _ := strconv.Atoi(p.exp[p.index]) // 转换类型
    p.index++
    return &ValNode{v}
}

func (p *Parser) Result() Node {
    return p.prev
}

main.go

package main

import (
    "fmt"
    "ssp_api_go/test/design/interpreter"
)

func main() {
    p := &interpreter.Parser{}
    p.Parser("1 + 3 - 2")
    fmt.Println(p.Result().Interpreter())
}

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Go