go mod 的使用及解答学习以来的疑惑(go mod 目录、包名、import之间的关系)

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 协议》,转载必须注明作者和本文链接
支付宝领个红包就是对我最大的赞赏了
shijf
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!