在下面运行我的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)
}
答案 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)
}
一些意见:
如果你想使用严格单一字符串的字符串,你可以使用rune
- 它是一种特殊类型,可以保留1个符号。还要按符文而不是1个字符长度的字符串迭代字符串,因此在这里使用符文更方便。
如果您没有第一次找到符号,您可以在地图中设置标记,即您拥有该符号的种子。通过这种方式,您将能够找到重复的字符。
要使您可以在顶级定义的所有功能访问m
Golang要求您使用所有已定义的变量。如果您有一个不想在以后使用的变量,请使用保留名称_
。