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
  • 相关阅读:
    jquery ready()的几种实现方法小结
    jQuery之$(document).ready()使用介绍
    jquery的$(document).ready()和onload的加载顺序
    php var_export与var_dump 输出的不同
    PHP获取和操作配置文件php.ini的几个函数
    PHP 网站保存快捷方式的实现代码
    php 图形验证码的3种方法
    面向对象基础01
    提高记忆力
    Python数据分析环境和工具
  • 原文地址:https://www.cnblogs.com/rsapaper/p/9558834.html
Copyright © 2011-2022 走看看