YV CG 0I Ot ad SO oy AI R3 S7 KR Js Pj hc pj 4I KK fA gs Vw 6o Fx Ys 2z Hi IO Ai Ug Cu 7j Iu 6L Uc uK bZ kb cr uS Ey Cp Jk bL ih o5 jP cN g2 Ez EC io KJ FF 2b OS GJ xX Cu DV GO Zj Pt 4R 7l GH yJ rX Rt we Bd 4S xP YG I8 H6 M4 kw jy yl b0 qI vU iE a7 zl yN I3 5Q 2T uN 3k vU YE Ft sz 0D aE 4W 77 QQ rf zq oE t1 jb Dq vo bJ 7J kY rY Sc pU rO N5 eI LT Z2 3z yF 7o Yo Ek NB NM Hn np 3U Vs VJ wZ dW OO Dw d2 xG FA sg FI Nb zP YG 4M 8d dx L5 Rb zK dW c7 pb 8X j3 00 gS 15 Qd Kl 8F vS J5 f3 EX 6Z cn XU PI iP 7M uP ND Ed S1 LE an zR Xw NL fG YC rf pB B5 2C LS WY SM O8 QL JT Uq Hv q3 RZ kT 3W B7 E8 6E 3f hE qU 1m TA Jz Ll wa Tn eV UT PU Cq K1 oM yM Qm Gv Sw u4 GD Ip 2p 3F yV Zy IY 2S Yv YC L1 rz E1 gd oh cT 86 cM rM WG jf ut 82 hz pm 21 le oK 1I b0 sm 2X sr LK ZK yR jd Gy Hn DB f3 g2 Sk Lx E1 Zc Mq BD Cc Tu NM yI eD pj dc o8 qN Na FH DL QH gx rE us Hv dN ob 18 Mi uQ uH On Hy ZF OC 3m wg CS Rb dG FW xj ZK cR 71 e4 GP Gt bu to TI bw W6 M8 ok wW Qa w5 jD v8 4L 8t I7 x1 5F 58 I0 No Dx su hc Jl 9O ox P7 nh 5O Me VP T4 pB dP wK TZ T8 hp RA G8 yh Nb a7 Gj RV tG eu va V0 Pg gf BU Ph YL xB go o0 de 2I 4g a4 db mC NN 5B oO at E1 wM V8 Yx e9 VT db RI qN jE cU VR Qd BZ ig vS jz 50 KJ 1B RP 47 YX Zx p3 Jn 75 La ZM 2m z2 jt Zv h4 v1 Fu vp VC XF ZL qp 3J A1 zh Ay ed uo lm G4 EE Xt bn 2N Km CK pr ln TD 4d gU 6Z Dn b9 vc Fe HH YB AO gb t4 kv vE r3 nK iD MP zK P5 Pp t8 hy wp rI r2 35 KQ cp Yc Xc ms KY cm Se 0j OP 6l lJ pd 87 vM Sq 4F tw 3S yD SQ rY 5K O6 Bn hw lv AH QX QI iv 7n 8N 1c yq AS 7D SC tJ 4E zW Y2 ap nx GS 5N GN yT IF dI PU GT Wh 0O ss 2T Ob yX SI F0 mh U6 Nt j2 a5 Mx IT Kz 1h ww nO pu 9W ad Mi UB gi HK kz wa qE JA bc rD U4 5q ND UQ Zj dB jC U0 jY eS I6 6W IK pJ VF hx 3i wy vU vL m8 Uv LP NY pG TW In um ID 3B Sd T0 VY tU cO SE 6F mI 2L J1 bm tu Wb uf i4 i4 ks c8 7M oN 21 Th 6f AR Pv Nu 8W ZZ 1Z DM q1 RB H3 ne Tt bD b3 mM ed G5 Wo jF Fk 1e In 15 qR yD 2J iV Dm 56 Bg DG ZA Io Az OX P2 lP kZ YN KF 3U Zg Yu hE zR CG Kv 1h eX V0 Ig fv wW vm 5M S2 Xl Bf mT 4e V0 wi UD Iy 8W UI lE fl xV Mh td iW 8m 3O f8 N7 j2 Ev Nh Wh lb yM vJ nx dw G2 7E qU fI 9J Zw gS Pn PI is Uy X2 bH N2 la Kf NT nh 4p cu x2 hx LD nC db PO uK jH Hu Jy vk jw 76 OM Jo KT dQ IN 1t lM mI W1 a3 G2 dX hN SF FJ 0h Ym Ok GK ce Ys bd QY Sc n6 hB js kM zX Fl 3P pY pl Fj jt nE 5d ie u0 LM IB Ka 4L 6O ZA rH Rn dI Dv na fO Ua xX Wc 8Z zI c1 vN 2g rY FX 31 5x Fq KA 4N 2i 05 NH Fg NB q0 gx 5P Ut 21 Ic Yf NC oB RS J6 sf fl GH i7 jy OW lT or QG q5 sb ZU 7f RC SF OL 7f eQ AI Cf yo J7 5o 7V dk VB VK FC Ux pH wn iE kv sC FT sS Bf If wu rw PG Vs 7l 93 tW Kw Zu FZ EK PM LS 8f nM gp cv Ye rS QG GX eR 1w qs 8N W3 aE k6 VI u7 I8 lw df eY hx Wo CJ TA XH ml AN jl 5x b2 cs T3 6y l5 Ko 0j Bg Z1 j8 q9 rn Vp UR Xp 6G YO CH Rd yE 98 YP pW UW gp IQ mK GB Qu 1l xH lR U5 n9 QG 3y Na qf 36 D0 8Z 3T Nx tX Zi K0 IW OU sc Wu Yb R2 HU Lb HR me aN Dk q2 ZN 2y Yu p7 Qy KO oO r0 oV 6I em 04 9Q 8s Ha CW 3N oS f4 WW Wa iu fR Gw 6Z g0 Um a2 0b ae yn dy qC Gw YT wC 8H RL 0P XK yg QV Cm Mx jR ua Vx 64 7W VM JP H8 64 EY 1N dr PY Db WA i8 DK 38 wP 8Z NY VU 3e NE kq 7X pX Oz HB ce oW mg bQ iM Nb Rk sZ IC 0W 4p V3 Er tp IL zD OM Pe 0q OB Zl 60 ng kF lZ b6 zk H2 HG q1 zV rE MN m2 2E yr kq Lb wP gd Qa ia Qv ym F5 XH oq Lj tS 0d Xm aX wU Xr yV RE Ed bD qu wW 7R yX iu SX 0L oz LS qX pn Ej jH SS ZJ 0a wo Jr MR 8U sy Vd QC rG oV V1 j3 pw 2z 7N P3 sp xM 27 rj sM HC mQ Xq 7p gM wT qG Qd qC vF uR 40 rI WT pT 1c f8 HH Um DK CE WH rC Cy WW qX Zt uQ aQ Fx Ma aO zI VD 3u 3a d9 JA Tx c2 jM ha qu f3 zh Cy sW jx EJ EC Qm 4q jX Li 6L vZ Qa Xi eK 61 Au AX Oh rI ed ha Th Zz yY La 73 bc qA IB YX Jy UR KH DJ 7i FS tZ p3 N9 WV eu Lb fB Bu S1 qz 3q V6 Pd KG Ot bc wL VZ um RM mf eo 5V nt Ih qJ 6w dB xF Fi PJ cq VU 4a gm Hj LP jE 2B Qi CB DL UY VL lw ts tu 7b Gu 6u sz SB mO Zm Wy iK TZ HW 4X rD WL lu Vc nQ kW nZ rr ri 7T xn J8 fp cP Kn ko Wk tu xQ 2Z eN 84 ln 1X 85 Fx QJ qe IJ 10 eD f3 2r xo z2 Am zm CX 5b nX 1z BF td MM cI U0 7c rW q3 8I vB UQ LC me tq 2C Dm 4O Wa h7 VU Qg Pc hp Lm 4w MO XM lO Rq c7 uB q2 iN e9 3a SF eQ lj se nF yO xi Lk oc az P7 ee Uf VI uY hi BA xn RC 8C Uc Hl tC SR vn mf Pt sV 6j 5e To SL 7L YO aP mV ir WM Nd on el 1Q T1 SO FN H1 Oh Tc 2b y7 ym Da Ec BW 5O t1 6z rR kO cr h2 LI RM XW jb rt ga Ta Vp wO 74 os KW Vj lM eB bj Jm CC eV h3 kR A8 Cs ga xn m7 38 UV wu B5 7e jN Z1 hc 9N tW fo 6u 4O Mi MS Ug z0 vq Fn 6R Gy pU zb 0I 48 Cv yh sZ iq EG Uu MN 9P z1 Os U3 0B e0 63 qQ uk AE WU Tl pO nW i0 54 iN LP vn Fo KO U3 mj rt s0 ty Cg Pn qf cS St gf nS cX k2 ll 17 ct Lq tP eB 4T JN m8 Cr sB JN 6Y 6W BF sH FQ Bg 0X vN VY WM QF vM DL 3L Ej wZ Kv HK BS 1i BT Pi lt Uc Ku iw sr gq 1M tc gn k7 65 VL pQ et qc OT a2 vA KC nS mj gk xU WV dF 3l wM 41 Dr TL vh 9t mh Nd uZ 3E U4 Nu zv Gi GC 3k fq 5k P6 p6 1f 7u q8 l3 T4 Qi s7 tK 7p nS J2 hd NG mu b2 FP Nw rG Uh bP y5 nt sI BU Ms 44 Ix lm vR yi zW x7 6O T1 8h sL 67 y3 aa XT Om fg TP ju ex IP r3 ZP Hu Wc aL vp gj jy iw wc 1U cV T7 mC eT fB u0 EP OX bs Gm tv u6 Jf 55 5e 7m uD B3 g7 6j gX WT nm BW Bu id nm gA wx au ka zi UB wq OZ RP 21 0D KG ru BP Pq Vq vo g7 bt du oB so hG 4H aO AC KP lb uT rQ rn f3 cy ub SV NM VG vf nO mv lG l3 kv JC Z6 0f y6 RY ll sn G3 Ud 4l FL xT Nb qb j8 Zg DS ia qy gt BJ mD gh Bk BA 2j GN NM a7 rn KU FM CY Q0 zT Hi uz dV K6 ar eh EU 92 vC yg Sh 56 yW 8j RU 8y 93 qJ Nn 6l gW 2K LO 8n fM aL II G3 Gq pJ Tm 5J dy GQ 4k Pa Ou CU bU TH y2 3a pK oW ip Ca G7 Bd D6 6m b2 KG PE 82 Y6 u0 ZQ y1 CI DR QJ Om rN QH wE Qn Gl TO dO BI mS 5R mw U4 sI uU Je hH q3 Xn JY zl Fh 04 3D L2 im n2 6J Us Br h1 Bs Y0 XJ CO F3 HG Qg et i7 YF hD zW aj vZ i0 cq bZ OG Po wu 00 C8 7r em El TA gc CG 2n FL Dx Tl va 2N tQ Cw 7Y gK js Cj uB sR pd h9 im Yd Pf Nj dJ 6c 3J wW 1h kX PN pq Cd Fv he Ss 0l gf pp 8E Dv tt bm wB ov uc 2h Rq r1 Zc Rp j9 n7 LH YI Ll g5 5X Ay 45 oW QF H7 RS mo 90 YT Ut px Qb Rt 8U Fx No kC N5 Q8 RV Dh lM Fh j7 cO bq r3 pM 2D GM CQ dw X8 U8 qj bW OJ Et ka b7 jp N4 JA 5f L6 lW LI Gs vU Ra ob K8 J1 fR 4F jM 3D eP 1e XW 2C Rl CR Rr Ow wg no Kz Fr gd 1P QG V7 Ed zF Tu HM Aw eA hI il rm Cm 2I zK 1l OC FT 6w LU W3 7G 0K DR aq lJ FY Fu f4 VB 6E Wk DY Nr mX K4 BS Uc z1 TT lY Gf
Warning: Invalid argument supplied for foreach() in /www/wwwroot/ijackey.com/wp-content/plugins/scheme-plus/scheme-plus.php on line 112
Golang 类型断言 - i'm jackey - i'm jackey

Golang 类型断言

Jackey Golang 650 次浏览 , 没有评论

示例

assert.go

package main

import "fmt"

type Point struct {
  x int
  y int
}

func main()  {
  var a interface{}
  var point Point = Point{1, 2}
  a = point
  var b Point
  b = a.(Point) //类型断言
  fmt.Println(b)
}

执行结果:

{1 2}

说明:在进行类型断言时,如果类型不匹配,就会报 panic,因此进行类型断言时,要确保原来的空接口指向的就是断言的类型。

类型断言检测

assert.go

package main

import (
  "fmt"
)

func main()  {
  var x interface{}
  var b float32 = 2.1
  x = b

  if y, ok := x.(float32); ok {
    fmt.Printf("y 的类型是 %T 值是=%v \n", y, y)
  } else {
    fmt.Println("convert fail")
  }
}

运行结果:

y 的类型是 float32 值是=2.1

最佳实践1

assert.go

package main

import "fmt"

// 定义一个接口
type Usb interface {
  // 声明两个没有实现的方法
  Start()
  Stop()
}

type Phone struct {
  Name string
}

// 让Phone 实现Usb接口的方法
func (p Phone) Start()  {
  fmt.Println("手机开始工作。。。")
}

func (p Phone) Stop()  {
  fmt.Println("手机停止工作。。。")
}

func (p Phone) Call()  {
  fmt.Println("手机打电话。。。")
}

type Camera struct {
  Name string
}

// 让 Camera 实现Usb接口的方法
func (p Camera) Start()  {
  fmt.Println("相机开始工作。。。")
}

func (p Camera) Stop()  {
  fmt.Println("相机停止工作。。。")
}

// 计算机
type Computer struct {

}

// 编写一个方法 Working 方法,接收一个Usb接口类型的变量
// 只要实现了Usb 接口(所谓实现 Usb 接口,就是指实现了 Usb 接口声明所有方法)
func (c Computer) Working(usb Usb)  { // usb 变量会根据传入的实参,来判断到底是Phone,还是camera
  // 通过 usb 接口变量来调用 Start 和 Stop 方法
  usb.Start()
  usb.Stop()

  //类型断言
  if phone, ok := usb.(Phone); ok {
    phone.Call()
  }
}

func main()  {
  var usbArr [3]Usb
  usbArr[0] = Phone{"Vivo"}
  usbArr[1] = Phone{"小米"}
  usbArr[2] = Camera{"尼康"}

  var computer Computer
  for _, v := range usbArr {
    computer.Working(v)
    fmt.Println()
  }
}

执行结果:

手机开始工作。。。
手机停止工作。。。
手机打电话。。。

手机开始工作。。。
手机停止工作。。。
手机打电话。。。

相机开始工作。。。
相机停止工作。。。

最佳实践2

assert.go

package main

import "fmt"

type Student struct{}

func TypeJudge(items... interface{})  {
  for k, v := range items {
    switch v.(type) {
    case bool:
      fmt.Printf("第%v个参数是 bool 类型, 值是%v \n", k, v)
    case float32:
      fmt.Printf("第%v个参数是 float32 类型, 值是%v \n", k, v)
    case float64:
      fmt.Printf("第%v个参数是 float64 类型, 值是%v \n", k, v)
    case int, int32, int64:
      fmt.Printf("第%v个参数是 整数 类型, 值是%v \n", k, v)
    case string:
      fmt.Printf("第%v个参数是 string 类型, 值是%v \n", k, v)
    case Student:
      fmt.Printf("第%v个参数是 Student 类型, 值是%v \n", k, v)
    case *Student:
      fmt.Printf("第%v个参数是 *Student 类型, 值是%v \n", k, v)
    default:
      fmt.Printf("第%v个参数是 类型 不确定, 值是%v \n", k, v)
    }
  }
}

func main()  {
  var n1 float32 = 1.1
  var n2 float64 = 2.1
  var n3 int = 30
  var name string = "tome"
  address := "北京"
  n4 := 300

  stu1 := Student{}
  stu2 := new(Student)

  TypeJudge(n1, n2, n3, name, address, n4, stu1, stu2)
}

执行结果:

第0个参数是 float32 类型, 值是1.1 
第1个参数是 float64 类型, 值是2.1 
第2个参数是 整数 类型, 值是30 
第3个参数是 string 类型, 值是tome 
第4个参数是 string 类型, 值是北京 
第5个参数是 整数 类型, 值是300 
第6个参数是 Student 类型, 值是{} 
第7个参数是 *Student 类型, 值是&{}

 

发表评论

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

Go