GO语言调用外部函数失败总结
GO
背景
最近准备学习一门新的语言,于是选择了GO, 没想到学了不到半个小时,就遇到一个大坑。 调用外部函数始终失败,折腾了1个多小时,终于摸索清楚了。
废话不多说,下面是我练习的一个目录结构,在其中我在main.go
中要调用src/print.go文件中Print
函数。 以下内容是我调用过程中所遇到的错误,希望对GO初学者有所帮助。(正确的代码内容在文章最后)
练习的项目结构
@:~/goProject/test.cn$ tree
.
├── go.mod
├── main.go
└── src
└── print.go
1 directory, 3 files
Q1 导入的是空路径
build command-line-arguments: cannot load /home/vagrant/aaron/goProject/test.cn/src: malformed module path "/home/vagrant/aaron/goProject/test.cn/src": empty path element
main.go
package main
import (
"/home/vagrant/aaron/goProject/test.cn/src" // 这个路径错误
)
func main(){
src.Print()
}
Q2 导入的路径不全
vagrant@aaron:~/aaron/goProject/test.cn$ go run main.go
build command-line-arguments: cannot load src: malformed module path "src": missing dot in first path element
main.go
package main
import (
"src" // 这个路径不全
)
func main(){
src.Print()
}
Q3 找不到路径
vagrant@aaron:~/aaron/goProject/test.cn$ go run main.go
build command-line-arguments: cannot load test.cn/src: cannot find module providing package test.cn/src
A3
这个失败是在test.cn目录下缺少go.mod
文件
Q4 函数不可调用
vagrant@aaron:~/aaron/goProject/test.cn$ go run main.go
# command-line-arguments
./main.go:9:2: cannot refer to unexported name src.Print
./main.go:9:2: undefined: src.Print
main.go
package main
import (
"test.cn/src"
)
func main(){
src.Print()
}
A4
这个失败的原因是调用的函数是不是公开的函数,如需让外部调用函数,需要函数名的首字母为大写。
Q5 报错Use as value
vagrant@aaron:~/aaron/goProject/test.cn$ go run main.go
# command-line-arguments
./main.go:9:2: undefined: fmt.Pirintln
./main.go:9:27: src.Print() used as value
print.go
func Print() {
fmt.Println("I am Print")
return
}
A5
报错原因是调用的函数没有返回值
最后成功调用的代码展示
go.mod
module test.cn
go 1.13
print.go
package src
import "fmt"
func Print() {
fmt.Println("I am Print")
return
}
main.go
package main
import (
"test.cn/src"
)
func main(){
src.Print()
}
本文来自博客园,作者:烟熏柿子学编程,转载请注明原文链接:https://www.cnblogs.com/aaron-948/p/17520446.html