用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")
}
