title: Beego脱坑(十)数据绑定
tags: go,beego
author : Clown95
绑定普通变量
我们先看下怎么绑定普通变量,下面的代码我们将通过浏览器来绑定string类型的值。
控制器:
package controllers
import "github.com/astaxie/beego"
type BindVarController struct {
beego.Controller
}
func (this *BindVarController) Get(){
var str string
this.Ctx.Input.Bind(&str, "str")
this.Ctx.WriteString("str绑定的值为:"+str)
}
注册路由:
beego.Router("/bind",&controllers.BindVarController{})
我们可以调用http://localhost:8080/databind?str=clown ,把clown赋值给变量str
绑定切片
现在我们来演示下如何绑定切片。
控制器:
func (this *BindVarController) BindArr(){
buf := make([]int, 3)
this.Ctx.Input.Bind(&buf, "buf")
this.Ctx.WriteString("buf绑定的值为:\n")
for k,v:=range buf{
this.Ctx.WriteString( strconv.Itoa(k)+" : "+ strconv.Itoa(v)+"\n")
}
}
注册路由:
beego.Router("/bind1",&controllers.BindVarController{},"Get:BindArr")
我们可以通过两种方式调用:
- 如果绑定的数据类型是切片,在url中的下标,此时解析顺序只和下标有关,和输入顺序无关,并且输入的数据个数大于切片容量,可以绑定成功,切片自动增容。
- url中不带下标,解析顺序和输入顺序有关,其他同上。
- 如果url中某个数据的类型不匹配,只会导致这一个数据解析失败,其他的数据任然能够解析成功
不能绑定数组
var array [2]int
this.Ctx.Input.Bind(&array, "array")
fmt.Println("array = ", array)
以上代码错误,不能将数据和数组进行绑定。