为了账号安全,请及时绑定邮箱和手机立即绑定

一段Go代码看不懂求解!

一段Go代码看不懂求解!

潇潇雨雨 2019-04-07 09:38:14
代码是这样的:packagemainimport("fmt""io""net/http""log")//获取大小的借口typeSizerinterface{Size()int64}//helloworld,thewebserverfuncHelloServer(whttp.ResponseWriter,r*http.Request){if"POST"==r.Method{file,_,err:=r.FormFile("userfile")iferr!=nil{http.Error(w,err.Error(),500)return}fmt.Fprintf(w,"上传文件的大小为:%d",file.(Sizer).Size())return}//上传页面w.Header().Add("Content-Type","text/html")w.WriteHeader(200)html:=`Sendthisfile:`io.WriteString(w,html)}funcmain(){http.HandleFunc("/hello",HelloServer)err:=http.ListenAndServe(":12345",nil)iferr!=nil{log.Fatal("ListenAndServe:",err)}}现在问题在于这一句:file.(Sizer).Size()。Sizer的interface明显是程序里定义的,没有任何实现接口的代码,但是这个语句是怎么工作的?
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

go的原理是这样的
首先,一个类可以有很多个方法。
当定义一个interface的时候,就会自动的把符合interface描述的方法的类,划为interface,不用自己声明。
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 404 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信