Beego脱坑(十)——数据绑定

绑定普通变量
我们先看下怎么绑定普通变量,下面的代码我们将通过浏览器来绑定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")
http://127.0.0.1:8080/bind1?buf[]=1&buf[]=2&buf[]=3


http://127.0.0.1:8080/bind1?buf[0]=1&buf[1]=2&buf[2]=3


如果绑定的数据类型是切片,在url中待下标,此时解析顺序只和下标有关,和输入顺序无关,并且输入的数据个数大于切片容量,可以绑定成功,切片自动增容。
url中不带下标,解析顺序和输入顺序有关,其他同上。
如果url中某个数据的类型不匹配,只会导致这一个数据解析失败,其他的数据任然能够解析成功
不能绑定数组
var array [2]int
this.Ctx.Input.Bind(&array, "array")
fmt.Println("array = ", array)
以上代码错误,不能将数据和数组进行绑定。

发布了76 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43778179/article/details/104723232