登录
首页 >  Golang >  Go问答

刷新后地图中的值发生变化

来源:stackoverflow

时间:2024-04-28 23:09:27 500浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《刷新后地图中的值发生变化》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我正在尝试创建一个在调用页面时记住其值的地图。我在函数外部声明了它,因此它会保持不变,但当调用页面时,映射仍然初始化为默认=t 值。我怎样才能让它记住它的值?

var rememberExpand =  make(map[int]bool{})

func (c *CollapsibleWithOption) Layout(gtx layout.Context, header, body func(C) D, more func(C), wallet_ID int) layout.Dimensions {
    fmt.Println(rememberExpand)
    for c.button.Clicked() {
        c.isExpanded = !c.isExpanded
    }

    rememberExpand[wallet_ID] = c.isExpanded
    fmt.Println(rememberExpand)

    icon := c.collapsedIcon
    if c.isExpanded {
        icon = c.expandedIcon
    }


                        
                    )
                })
            }),
            layout.Rigid(func(gtx C) D {
                if rememberExpand[wallet_ID] {
                    return body(gtx)
                }
                return D{}
            }),
        )
    })
}

正确答案


尝试将地图定义为 `var rememberexpand map[int]bool。

然而,这会导致一个新问题。第一次引用此地图时,它将是 nil,因为它尚未制作。我们可以通过检查地图是否等于 nil 来相当轻松地解决此问题,如果是,则创建一个新地图:

var rememberExpand map[int]bool

func (c *CollapsibleWithOption) Layout(gtx layout.Context, header, body func(C) D, more func(C), wallet_ID int) layout.Dimensions {
    if rememberExpand == nil { // Check if the map has been initialized yet
      rememberExpand = make(map[int]bool) // If not, create a new map
    }

    for c.button.Clicked() {
        c.isExpanded = !c.isExpanded
    }

    rememberExpand[wallet_ID] = c.isExpanded
    fmt.Println(rememberExpand)

    icon := c.collapsedIcon
    if c.isExpanded {
        icon = c.expandedIcon
    }


                        
                    )
                })
            }),
            layout.Rigid(func(gtx C) D {
                if rememberExpand[wallet_ID] {
                    return body(gtx)
                }
                return D{}
            }),
        )
    })
}

终于介绍完啦!小伙伴们,这篇关于《刷新后地图中的值发生变化》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>