声明go函数意外抛出(

时间:2017-10-10 18:57:27

标签: go

在下面运行我的Go代码时,我一直看到上面的构建错误。我该如何解决这个问题?

package main

import "fmt"

func do_comp(var line string) {
    for i, c := range line {
        c, ex := m[i]
            if ex == true {
                fmt.Printf("not unique character line, %c exists", c)
            }

    }
    return

}

func main() {
    st := "abracadabra"
        m := make(map[string]bool)
        do_comp(st)
}

1 个答案:

答案 0 :(得分:2)

package main

import "fmt"

var m map[rune]bool

func do_comp(line string) {
    for i, c := range line {
        _, ex := m[c]
        if ex == true {
            fmt.Printf("not unique character line, %c at position %v already exists\n", c, i)
        } else {
            m[c] = true
        }

    }
    return

}

func main() {
    st := "abracadabra"
    m = make(map[rune]bool)
    do_comp(st)
}

一些意见:

  1. 如果你想使用严格单一字符串的字符串,你可以使用rune - 它是一种特殊类型,可以保留1个符号。还要按符文而不是1个字符长度的字符串迭代字符串,因此在这里使用符文更方便。

  2. 如果您没有第一次找到符号,您可以在地图中设置标记,即您拥有该符号的种子。通过这种方式,您将能够找到重复的字符。

  3. 要使您可以在顶级定义的所有功能访问m

  4. Golang要求您使用所有已定义的变量。如果您有一个不想在以后使用的变量,请使用保留名称_

  5. 您可以在https://play.golang.org/p/u9g6VxjCHH

    上试用