同じ構造体型の値への参照を含むリストを持つ構造体を作成しました。私はgo言語を初めて使用し、上記の構造体型に自動的に解決される値にアクセスする方法を理解できません.Javaで次のようなもの:
class Node{
String value ;
String key;
List<Node> children = new ArrayList<Node>();
public Node(String key, value) {
// rest of the code follows
}
}
class AccessNode {
public static void main(String args[]) {
Node node = new Node("key", "value");
// The values automatically resolve to type Node.
for(Node node : node.children) {
// do something
}
}
ノードは次のように定義されます。
type Node struct {
key string
value string
isword bool
childern *list.List // This is essentially a list of Node}
// Next two functions are a copy of implementation in list package.
func (n *Node) Init() *Node {
n.isword = false
n.childern = list.New()
return n}
func New() *Node {
return new(Node).Init()}
ここで、子を繰り返し処理し、比較対象の文字列と値が部分的に一致する Node を取得するたびに戻ります。
func countMatchingChars(key string, node *Node) (int, *Node) {
count := 0
for e := node.childern.Front(); e != nil; e = e.Next() {
// Getting error when accessing e.Value.key
if c := MatchCount(e.Value.key, key); c > 0 {
return c, e.Value
}
}}
次のエラーが表示されます
./trie.go:53: e.Value.key undefined (type interface {} has no field or method key)
./trie.go:54: cannot use e.Value (type interface {}) as type *Node in return argument: need type assertion