从另一个文件调用函数

4
在我的目录/go/src/lodo中,我有两个文件:main.go和uniqueElement。 uniqueElement.go
package main

import "fmt"

func unique(a []int) {
    var value int

    for i:= range a {
        value = value ^ a[i]

    }
    fmt.Println(value)

}

main.go

package main

func main() {
    var a = []int{1, 4, 2, 1, 3, 4, 2}


    unique(a[0:])
}

我收到了一个错误。
./main.go:7: undefined: unique

我应该如何在main函数中正确调用unique函数?
3个回答

12

你可能是用 go run main.go 运行你的代码,这只会编译和运行main.go。尝试使用go run main.go uniqueElement.go来编译并运行二进制文件。


2
或者更好的方法是:使用go run *.go命令来包含所有文件。 - Elya Livshitz
除非您有其他具有冲突函数名称的go文件,通常情况下是另一个带有“main()”函数的文件。 - Dean Elbaz

1
将名称从unique更改为Unique

3
文件在同一个包内,因此他能够访问未公开的函数。 - Dean Elbaz

1
以下代码对我有效:

以下代码对我有效:

//module github.com/go-restful/article

package article

func IndexPage(w http.ResponseWriter, r *http.Request) {}

这个函数必须被导出,大写字母开头,并添加注释

在 main.go 中的使用

//module github.com/go-restful

package main

import (article "github.com/go-restful/article")

func handleRequests() {
    myRouter := mux.NewRouter().StrictSlash(true)
    myRouter.HandleFunc("/", article.IndexPage)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接