用GoLand写Go语言时怎么对同一个包、不同包下的文件中的方法进行调用?
1 同包裹不同文件下的方法调用 方法1
目录结构:
main.go:
package main import ( "fmt" ) /** 测试同包裹不同文件下的方法调用 方法1 设置所有文件中的package都为main才可以运行 */ func main(){ fmt.Println("我是main方法,将要测试相同包裹不同文件下的方法调用:") function1() function2() }
function1.go:
package main import "fmt" func function1(){ fmt.Println("我是同包裹下的方法:function1") }
function2.go:
package main import "fmt" func function2(){ fmt.Println("我是同包裹下的方法:function2") }
需要将该包裹下所有文件的package都命名为main才可以运行,否则报错。
问题1:为什么需要将该包裹下所有文件的package都命名为main才可以运行?
而且好像只能在文件夹那里右键运行才行,如果直接在代码编辑区右键运行会报错:
这是直接在代码编辑区右键运行的结果:
问题2:为什么直接在代码编辑区右键运行会报错?
2 不同包裹不同文件下的方法调用 方法2
目录结构:
main.go:
package main import ( "./function1" "./function2" "fmt" ) /** 不同包裹下,调用不同文件中的方法 方法1 不用每个文件中的package都是叫main了 */ func main(){ fmt.Println("我是main方法,将要测试不同包裹下的方法调用:") function1.Function1() function2.Function2() }
function1.go:
package function1 import "fmt" func Function1(){ fmt.Println("我是不同包裹下的方法:Function1~") }
function2.go:
package function2 import "fmt" func Function2(){ fmt.Println("我是不同包裹下的方法:Function2~") }
3 方法3 针对上面的方法1
不用每个文件的package都叫main了,也可以直接在代码编辑区右键运行,感觉可以归类为方法2,但好像又和方法2有点不同
目录结构:
main.go
package main import ( "fmt" "../../call1_2" ) /** 测试方法调用 方法3 */ func main(){ fmt.Println("我是main方法,将要测试方法调用:") call1_2.Function1() call1_2.Function2() }
function1.go:
package call1_2 import "fmt" func Function1(){ fmt.Println("我是方法:Function1") }
function2.go:
package call1_2 import "fmt" func Function2(){ fmt.Println("我是方法:Function2") }
有疑问加站长微信联系(非本文作者)