1.c.writermem的意义
2.
func (c *Context) Next() {
c.index++
for s := int8(len(c.handlers)); c.index < s; c.index++ {
c.handlers[c.index](c)
}
}
为什么最后c.index++?
3.
有这么一段代码
type Params []Param
type Param struct{
Key string
Value string
}
为什么不是type Params map[string]string?又或者说用[]Param有什么好处?
根据注释写到使用slice的方式主要是因为slice是有序的,url中的第N个变量就是slice中的第N个元素
4.
尝试使用PostFormMap
5.解析body或query数据
通常使用request.ParseForm后,通过r.Form或r.PostForm相应参数值,这里稍微有些不方便的是
r.Form中存储所有解析的值,包括Query及Body中的,r.PostForm只包含body中的
我们业务中通常是会明确要获取Query中或Body中的值,所以这块要稍作改写
type Values map[string]string
if v,ok:=values[key];ok{
}
6.
func (c *Context) Bind(obj interface{}) error {
b := binding.Default(c.Request.Method, c.ContentType())
return c.MustBindWith(obj, b)
}
interface传递也是值传递?return后obj的值会不会改变?
7.
func (r *Request) FormFile(key string) (multipart.File, *multipart.FileHeader, error) {
为什么返回三个值 第一个参数和第二个参数可否合并?
8.
_,b,c:=getdata();
_是否还会发生值传递?