首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >go程序编译错误

go程序编译错误
EN

Stack Overflow用户
提问于 2013-10-14 12:26:27
回答 1查看 65关注 0票数 0

这是代码,我使用gccgo编译。这是一个基于图表的组织者。我不需要关于图形算法的建议。

代码语言:javascript
复制
package element

import (
        "fmt"
        "strings"
        "io"
        "strconv"
)

type Node struct {
    id   int
    name string
    props map[string]string
    links map[string][]*Node
}

var names = make(map[string]int , 8)
var nodes = make(map[string][]*Node , 8)


//========functions================
func new_node(Id int) *Node {
    return  &Node( Id, " ", nil, nil) 
}

func getNode_byId(nodes []*Node, id int) *Node {    
    for _, node := range nodes{
        if node.id == id {
            return node
        }
    }
    return nil
}

func addNode(store string, node *Node) {
    nodes[store] = append(nodes[store], node)
}

func addLinkToNode(node, link *Node, property string) {
    node.links[property] = append(node.links[property], link)
}

func nodeFromString(str string, typ string) {

    lines := strings.Split(str, "\n")
    lcount := len(lines)

    if lines[0] == "[begin]" && lines[lcount] == "[end]" {
        fmt.Println("common dude! something wrong with ur string")
        return
    }

    fields  := strings.Fields(lines[1])
    id , _  := strconv.Atoi(fields[1])
    nod     := getNode_byId(nodes[typ], id )

    if nod == nil { nod = new_node(id) }
    addNode(typ, nod)

    nod.name = typ

    lines = lines[2:]
    ind :=0
    for index, line := range lines {
        fields := strings.Fields(line)
        if field := fields[0]; field[0] != '-' {
            ind = index
            break
        }

        nod.props[fields[0]] = fields[1]
    }

    lines = lines[ind:] 
    for index, line := range lines {
        if line[0]!= '+' {
            ind = index
            break
        }

        pivot := strings.Index(line, " ")
        field := line[0:pivot]
        fields := strings.Split(line[pivot:], ",")      

    for _, value := range fields {
        id, _ := strconv.Atoi(strings.TrimSpace(value))
        var link *Node = getNode_byId(nodes[typ], id)
        if link == nil { link = new_node(id) }  
        addNode(typ, link)  

        append(nod.links[field], link ) 
    }
}
}


func equal_byId( nodeA, nodeB Node) bool {
    return (nodeA.id == nodeB.id)
}

func equal_byProp( nodeA, nodeB Node, property string) bool {
    return (nodeA.props[property] == nodeB.props[property])
}

//========methods on node==========
func (node Node) IsEqual_byId( comparand Node ) bool {
    return equal_byId(node, comparand)
}

func (node Node) IsEqual_byProp( comparand Node, property string ) bool {
    return equal_byProp(node, comparand, property)
}

func (node *Node) addLink (property string, link *Node){
    addLinkToNode( node, link, property)
}

//===================
func main() {
        fmt.Println("hello world")
}

这就是我所犯的错误,我尽了最大努力,但我无法解决。

代码语言:javascript
复制
$ gccgo elements.go
elements.go:23:19: error: expected ‘)’
elements.go:23:34: error: expected ‘;’ or ‘}’ or newline
elements.go:23:2: error: too many values in return statement
elements.go:91:4: error: value computed is not used

我不明白我需要在哪里使用分号,以及为什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-14 12:36:37

我想问题可能在func new_node

代码语言:javascript
复制
return  &Node( Id, " ", nil, nil)

应该是

代码语言:javascript
复制
return  &Node{Id, " ", nil, nil}

请参阅literals

而且,在func nodeFromString (第93-ISH行)中,我有一种感觉:

代码语言:javascript
复制
append(nod.links[field], link)

应:

代码语言:javascript
复制
nod.links[field] = append(nod.links[field], link)

否则你会出错的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19360239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档