登录
首页 >  Golang >  Go问答

GO 语言结构体里定义 map 字段,使用时如何自动初始化?

来源:SegmentFault

时间:2023-03-12 20:07:44 187浏览 收藏

你在学习Golang相关的知识吗?本文《GO 语言结构体里定义 map 字段,使用时如何自动初始化?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

例如我有这样一个结构体

type Trie struct {
    isEnd    bool
    children map[rune]*Trie
}

当我初始化一个 Trie 变量,当他的某个

root := Trie{}
    
if root.children['a'] == nil {
    root.children['a'] = &Trie{}
}

对于这种情况,难道我每次赋值前都要先检查 map 是否被初始化了吗?如下:

root := Trie{}
    
if len(root.children) == 0 {
    root.children = map[rune]*Trie{}
}
    
if root.children['a'] == nil {
    root.children['a'] = &Trie{}
}

有没有更优雅的语法或做法,让为结构体的 map 赋值时自动初始化?

正确答案

go 的一般做法是定义一个 NewTrie:

func NewTrie() *Trie {
    return &Trie{
        true,
        map[rune]*Trie{}
    }
}

今天关于《GO 语言结构体里定义 map 字段,使用时如何自动初始化?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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