运行以下Go代码时出现以下编译器错误。
package sort
type InsertionSort struct {
Unsorted []int;
}
func (is InsertionSort) Sort(mode string) []int {
length := len(is.Unsorted);
funcs := map[string] func(int, int) bool {"method":is.greaterThan};
if mode == "desc" {
funcs = map[string] func(int, int) bool {"method":is.lesserThan};
}
for i := 0; i < length; i++ {
temp := is.Unsorted[i];
j := i - 1;
for ; j >=0 && funcs["method"](is.Unsorted[j], temp); j-- {
is.Unsorted[j + 1] = is.Unsorted[j];
}
is.Unsorted[j + 1] = temp;
}
return is.Unsorted;
}
func (is InsertionSort) greaterThan (a int, b int) bool {
return a > b;
}
func (is InsertionSort) lesserThan (a int, b int) bool {
return a < b;
}
以及具有调用功能的主包
package main
import (
"learning/Go/testgo/sort"
"fmt"
)
func main() {
unsort := []int {5, 7, 3, 2 ,4 ,8, 9, 12, 1};
i := sort.InsertionSort {unsort};
mode := "asc";
sorted := i.Sort(mode);
fmt.Println(sorted);
}
编译器返回的错误消息是
。\ sort.go:16:调用i.Sort
的参数太多了
注意: - 包 sort 已经有另一个名为BubbleSort的结构,它具有相同的Sort方法,没有参数。我不知道它是否与当前结构冲突。
请帮我解决这个问题。
答案 0 :(得分:0)
我认为您的目录顺序不正确,或者您可能还有其他一些奇怪的东西。
注意:我正在运行Ubuntu 16.04.1 64bit
wihtin go version go1.6.2 linux/amd64
所以,这是我用来运行你的包的步骤。
1 -
检查您的GOPATH
或导出一个新示例
$ export GOPATH=$HOME/Bureau/stack
<强> 2 - 强>
检查您的$GOPATH
是否指向某个目录:
$ $GOPATH
bash: /home/nexus/Bureau/stack/ : is a directory
第3 - 强>
克隆$GOPATH/src
文件夹中的repository
$ cd $GOPATH/src
$ git clone https://github.com/gokulnathk/Go
现在,文件夹的层次结构为:
$ tree
.
├── Go
│ ├── atm-dispening
│ ├── download
│ │ └── download.go
│ ├── downloadParallel
│ │ └── downloadParallel.go
│ ├── hello
│ │ └── hello.go
│ ├── portserver
│ │ └── simpleport.go
│ ├── safebrowsing
│ ├── testgo
│ │ ├── functionParam.go
│ │ ├── functions.go
│ │ ├── greeting
│ │ │ └── greeting.go
│ │ ├── routine.go
│ │ ├── sort
│ │ │ ├── bubblesort.go
│ │ │ └── insertionsort.go
│ │ ├── sort.go
│ │ ├── sorttest.go
│ │ ├── struct.go
│ │ └── test.go
│ └── webserver
│ ├── modcloth.txt
│ └── simple.go
└── main.go
11 directories, 17 files
在这里,我们需要知道运行代码的是:
Go/testgo/sort
$GOPATH/src
main.go:
package main
import (
"Go/testgo/sort"
"fmt"
)
func main() {
unsort := []int {5, 7, 3, 2 ,4 ,8, 9, 12, 1};
i := sort.InsertionSort {unsort};
mode := "asc";
sorted:= i.Sort(mode);
fmt.Println(sorted);
}
<强>最后强>
检查您是否在$GOPATH/src
并运行:
$ go run main.go
输出:
[1 2 3 4 5 7 8 9 12]