package structures // NestedInteger is the interface that allows for creating nested lists. // You should not implement it, or speculate about its implementation type NestedInteger struct { Num int Ns []*NestedInteger } // IsInteger Return true if this NestedInteger holds a single integer, rather than a nested list. func (n NestedInteger) IsInteger() bool { return n.Ns == nil } // GetInteger Return the single integer that this NestedInteger holds, if it holds a single integer // The result is undefined if this NestedInteger holds a nested list // So before calling this method, you should have a check func (n NestedInteger) GetInteger() int { return n.Num } // SetInteger Set this NestedInteger to hold a single integer. func (n *NestedInteger) SetInteger(value int) { n.Num = value } // Add Set this NestedInteger to hold a nested list and adds a nested integer to it. func (n *NestedInteger) Add(elem NestedInteger) { n.Ns = append(n.Ns, &elem) } // GetList Return the nested list that this NestedInteger holds, if it holds a nested list // The list length is zero if this NestedInteger holds a single integer // You can access NestedInteger's List element directly if you want to modify it func (n NestedInteger) GetList() []*NestedInteger { return n.Ns }