用GoLand寫Go語言時怎么對同一個包、不同包下的文件中的方法進行調用?


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM