为什么不为我的自定义结构类型绑定ajax json数据?
我的环境:
去绑定功能
/**
* function : Model Init
*/
func modelInit(c echo.Context) tetrisModel.Tetris {
tetris := tetrisModel.DefaultInit()
if err := c.Bind(tetris); err != nil {
c.Logger().Error(err)
}
return *tetris
}
调用modelInit
func Control(c echo.Context) tetrisModel.Tetris {
tetris := modelInit(c)
fmt.Println("=======================")
fmt.Println(c.FormValue("nowBlockPositionX"))
fmt.Println(tetris.NowBlockPositionX) // do not printing, why?
fmt.Println("=======================")
// ... ... other code... ...
}
结果:
fmt.Println(c.FormValue("nowBlockPositionX"))
>工作
fmt.Println(tetris.NowBlockPositionX)
无法正常工作/无法打印,为什么? (不绑定)
我希望此代码将打印出“ 3”
DefaultInit()
func DefaultInit() *Tetris {
tetris := new(Tetris)
// some default data setting...
return tetris
}
俄罗斯方块模型代码
type Tetris struct {
NowBlockPositionX int `form:"nowBlockPositionX" json:"nowBlockPositionX"`
NowBlockPositionY int `form:"nowBlockPositionY" json:"nowBlockPositionY"`
NowBlock map[string]int `form:"nowBlock" json:"nowBlock"`
// other data exists...
}
ajax json数据(POST类型)
{
nowBlockPositionX: 3
, nowBlockPositionY: 0
, nowBlock: {L: 0}
// other data exists...
}
我知道go结构类型是否具有文字字符串(如form:"nowBlock" json:"nowBlock"
),然后结构自动bind('Bind function')。是吗?