go mod 的使用及解答學習以來的疑惑(go mod 目錄、包名、import之間的關係)

shijf發表於2021-01-16
mkdir learngo
cd learngo && mkdir pkg pkg2
cd pkg
touch pkg1.go pkg2.go 
cd ..
touch pkg21.go pkg22.go 
cd ../..
go mode init learngo

目錄結構

learngo-[
    - pkg-[
        pkg1.go
        pkg2.go
    ]
    - pkg2-[
        pkg21.go
        pkg22.go
    ]
    go.mod
    main.go
]
// pkg1.go
package pkg

import "fmt"

func A() {

    fmt.Println(454654564656)

}
// pkg2.go
package pkg

import "fmt"

func B() {

    fmt.Println(454654564656)

}
// pkg1.go
package pkg

import "fmt"

func A() {

    fmt.Println(454654564656)

}
// pkg21.go
package pkg2

import "fmt"

func B() {

    fmt.Println(454654564656)

}
// pkg22.go
package pkg2

import "fmt"

func B() {

    fmt.Println(454654564656)

}
// go.mod
module learngo

go 1.14
// main.go
package main

import (

    "fmt"

    pkgaaa "learngo/pkg"
    pkgbbb "learngo/pkg2"
)

func main() {

    pkgaaa.A()
    pkgaaa.B()
    pkgbbb.A()
    pkgbbb.B()
}

結論:import只是匯入目錄名,相當於新增了PATH變數,而和目錄下的包名沒有任何關係,但是同一目錄下的包名必須相同

本作品採用《CC 協議》,轉載必須註明作者和本文連結
支付寶領個紅包就是對我最大的讚賞了

相關文章