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

9.5 自定义包和可见性 go mod的更多相关文章

  1. 关于iOS和android自定义包的名字

    自定义包名的使用,android的包名和ios的包名都是你的自定义包名!如下以新浪微博SDK自定义包名示例:(官方没的,自己踩过坑,方便后来人吧) 相关技术文档:http://www.apicloud ...

  2. Go 自定义包引入报错

    配置文件 GO111MODULE=on 设置为on时,go命令行会使用modules,而一点也不会去GOPATH目录下查找.但自定义包在 $GOPATH/github.com/winyh/strrev ...

  3. Python 调用自定义包

    创建包 # mkdir -p /python/utils # touch /python/utils/__init__.py # vi /python/utils/Log.pyimport timed ...

  4. Golang自定义包导入

    # 文件Tree project -/bin -/pkg -/src -main.go -/test -test1.go -test2.go main.go package main import ( ...

  5. go语言基础之包和自定义包与main包

    1.包 所有 Go 语言的程序都会组织成若干组文件,每组文件被称为一个包.这样每个包的代码都可以作为很小的复用单元,被其他项目引用. 一个包的源代码保存在一个或多个以.go为文件后缀名的源文件中,通常 ...

  6. Phyton自定义包导入。

    说明:同一个项目下的自定义包. 项目层次: 1:先建好项目Pybasestudty 2:建Python package,包名:pytestpk,__init__.py是建包时自动产生的文件. 3:在该 ...

  7. Go 使用自定义包(package)

    自定义包的分为两种: 1.同目录下的包: 2.不同目录下的包: *经测试,同目录下是不可以用不同包的文件的 同目录下的包: 不同文件中的变量和函数都可以直接访问 不同目录下的包: 1.把要在自定义包外 ...

  8. python-sys模块、导入自定义包

    import问题:https://zhuanlan.zhihu.com/p/69099185 一.sys模块 sys模块是python自带模块,包含了与Python解释器和它的环境有关的函数.利用 i ...

  9. Java 控制台执行带自定义包定义的类,出现“Exception in thread "main" java.lang.NoClassDefFoundError: ConnectSQLServer (wrong name: sine/ConnectSQLServer)”

    1.先说明一下代码实现:自定义package sine, 源代码保存路径为:E:\JSP\HibernateDemo\HibernateDemoProject\src\sine\ConnectSQLS ...

随机推荐

  1. SQL Server中datetimeset转换datetime类型问题浅析

    在SQL Server中,数据类型datetimeoffset转换为datetime类型或datetime2类型时需要特别注意,有可能一不小心你可能会碰到下面这种情况.下面我们构造一个简单案例,模拟一 ...

  2. spring-boot 使用hibernate validation对参数进行优雅的校验

    springboot天生支持使用hibernate validation对参数的优雅校验,如果不使用它,只能对参数挨个进行如下方式的手工校验,不仅难看,使用起来还很不方便: if(StringUtil ...

  3. 【C】C语言位域(位段)详解

    作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14215449.html 目录 一.位域是什么? 二.位域的存储 2.1 相邻成员的类型相同 2.2 相邻成员的类 ...

  4. JavaDailyReports10_20

    1 package varycode; 2 class Grandparent 3 { 4 public Grandparent() 5 { 6 7 System.out.println(" ...

  5. ESXi 中重新启动管理代理

    使用直接控制台用户界面 (DCUI)重启管理代理: 连接到您的 ESXi 主机的控制台. 按 F2 自定义系统. 以 root 身份登录. 使用上下箭头导航至故障排除选项>重新启动管理代理. 按 ...

  6. Light Probes

    LightProbes (光照探针,光探测器?) 提供了一种方法用于捕获和使用 穿过场景中空白空间的 光(light)的信息. 和光照贴图相似(lightmaps),Light Probes也存储关于 ...

  7. 推荐一款自研的Java版开源博客系统OneBlog

    OneBlog 一款超好用的Java版开源博客      Introduction 简介 OneBlog 一个简洁美观.功能强大并且自适应的Java博客.使用springboot开发,前端使用Boot ...

  8. 万万没想到,JVM内存区域的面试题也可以问的这么难?

    二.Java内存区域 1.Java内存结构 内存结构 程序计数器 当前线程所执行字节码的行号指示器.若当前方法是native的,那么程序计数器的值就是undefined. 线程私有,Java内存区域中 ...

  9. Linux下Hadoop2.7.3集群环境的搭建

    Linux下Hadoop2.7.3集群环境的搭建 本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安 ...

  10. MySQL 集群知识点整理

    随着项目架构的不断扩大,单台 MySQL 已经不能满足需要了,所以需要搭建集群将前来的请求进行分流处理.博客主要根据丁奇老师的专栏<<MySQL实战45讲>>学习的总结. 架构 ...