zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    去除字符串中的重复字符
    .net生成的类,跨工程调用显示注释
    Flex 页面空白或Error #2032: 流错误处理办法
    读取点阵字库
    SQL多表联合查询(Access数据库表)
    MSComm不能触发MSComm1_OnComm()事件原因之一
    一个小时内学习SQLite数据库(转)
    人生无悔
    学习之道
    挺经
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9558834.html
Copyright © 2011-2022 走看看