• 9.5 自定义包和可见性 go mod


    the-way-to-go_ZH_CN/09.5.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/09.5.md

    package main

    import (
    "./pack1"
    "fmt"
    )

    func main() {
    fmt.Println(pack1.Pack1Int)
    s := pack1.ReturnStr()
    fmt.Print(s)
    }


    主程序利用的包必须在主程序编写之前被编译。主程序中每个 pack1 项目都要通过包名来使用:pack1.Item。具体使用方法请参见示例 4.6 和 4.7。

    因此,按照惯例,子目录和包之间有着密切的联系:为了区分,不同包存放在不同的目录下,每个包(所有属于这个包中的 go 文件)都存放在和包名相同的子目录下:

    Import with . :

    import . "./pack1"

    当使用.来做为包的别名时,你可以不通过包名来使用其中的项目。例如:test := ReturnStr()

    在当前的命名空间导入 pack1 包,一般是为了具有更好的测试效果。

    Import with _ :

    import _ "./pack1/pack1"

    pack1包只导入其副作用,也就是说,只执行它的init函数并初始化其中的全局变量。

    GO 导入自定义包 - 简书 https://www.jianshu.com/p/4fba6ce388b2 

     Go -- 多个go文件包名都是main - ma_fighting - 博客园 https://www.cnblogs.com/mafeng/p/6871753.html

    shawn@a:~/gokit/microKit$ cat m.go
    // 2020/9/18 10:31 Shawn
    package main
    import (
    "fmt"
    _ "LG/p0"

    )

    func main() {
    fmt.Println("main")
    }
    shawn@a:~/gokit/microKit$ cat p0/p0.go
    // 2020/9/18 10:44 Shawn
    package p0

    import "fmt"

    // 插件注册
    func init() {
    fmt.Println("p0")
    }
    shawn@a:~/gokit/microKit$ cat p0/t.go
    // 2020/9/18 10:44 Shawn
    package p0

    import "fmt"

    // 插件注册
    func init() {
    fmt.Println("p0-t")
    }

    shawn@a:~/gokit/microKit$

    shawn@a:~/gokit/microKit$ go run *.go
    p0
    p0-t
    main-dir-0
    main
    shawn@a:~/gokit/microKit$ tree

    ├── go.mod
    ├── m1.go
    ├── m.go
    └── p0
        ├── p0.go
        └── t.go

    1 directory, 5 files
    shawn@a:~/gokit/microKit$ cat m1.go
    // 2020/9/18 11:39 Shawn
    package main

    import "fmt"

    func init() {
    fmt.Println("main-dir-0")
    }

    func F() {
    fmt.Println("main-dir-0-F")

    }
    shawn@a:~/gokit/microKit$ cat m.go
    // 2020/9/18 10:31 Shawn
    package main
    import (
    "fmt"

    _ "LG/p0"
    )

    func main() {
    fmt.Println("main")
    // F()
    }
    shawn@a:~/gokit/microKit$

    ├── go.mod
    ├── m1.go
    ├── m.go
    └── p0
        ├── p0.go
        └── t.go
  • 相关阅读:
    不同Activity之间传递线程
    面向对象编程笔记--static
    SQL Server Compact/SQLite Toolbox 使用
    VirtualBox 磁盘容量调整
    scala快速入门
    Microsoft.Xna.Framework.TitleContainer.OpenStream()
    Windows Phone 7 中拷贝文件到独立存储
    Windows Phone 7 上传图片
    JavaScript 中undefined,null,NaN的区别
    CentOS7攻克日记(三) —— 安装Python3.6
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9558834.html
Copyright © 2020-2023  润新知