golang包引用解析
golang包引用解析
环境变量配置如下:
- GOROOT----[
C:\Go] - GOPATH----[
F:\workspace\go_home]
vs code配置如下:

F:\workspace\go_home 是总的golang工作空间, 在下面建立两个必须的目录 src(必须[F:\workspace\go_home\src]), pkg(必须[F:\workspace\go_home\pkg]), bin(非必须. go intanll时自动创建).
以后每一个单独的项目都是在 F:\workspace\go_home 单独创建一个目录. 比如下面:
F:\workspace\go_home\src\test1F:\workspace\go_home\src\test2
test1 和 test2 这是两个不同的项目. golang 主要是通过这样的目录结构, 来管理包的关系. 使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别
其中重要的是, 要理解应用包的定义. 应用包就是一个个独立的包体, 一个包一般是某个功能的源码文件组成的目录(可以有多层的子目录属于这个包). 其他在最顶层的包目录, 一般还会有个test文件,用于单元测试.
那么程序怎么运行呢?
在项目顶层创建一个main.go(程序运行入口), 包名注意一定是 package main.
看例子, 以下是整个demo的文件结构:

F:\workspace\go_home\src\test\calculate\calculate.go
//calculate.go
package calculate
func Mysqrt(val float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - val) / (2 * val)
}
return z
}
F:\workspace\go_home\src\test\hello\hello.go
//hello.go
package hello
import "fmt"
func Hello() {
fmt.Println("hello")
}
F:\workspace\go_home\src\test\main.go
//main.go
package main
import (
"fmt"
"test/calculate" //这里import的是目录名, 不是包名字, 在golang中, 包名可以和目录名不一致的
"test/hello" //这里import的是目录名, 不是包名字, 在golang中, 包名可以和目录名不一致的
)
func main() {
hello.Hello() //注意注意注意: 这里应用的是包名, 不是目录名
fmt.Println(calculate.Mysqrt(5))
}
//这里import的是目录名, 不是包名字, 在golang中, 包名可以和目录名不一致的
//注意注意注意: 这里应用的是包名, 不是目录名
这两个主要是要注意的, 总的来说是 import 的是包的路径, 引用包的东西是使用包名
golang包引用解析的更多相关文章
- golang包引用
一.我的GOPATH环境变量值如下图: 二.在GOPATH路径下面的的src目录下面的目录名称就是引用里面包的起始位置,如下图: 三.举例说明:这里引用同一个项目的包,源文件“learn/main/m ...
- golang reflect包使用解析
golang reflect包使用解析 参考 Go反射编码 2个重要的类型 Type Value 其中Type是interface类型,Value是struct类型,意识到这一点很重要 Type和Va ...
- Golang 包管理机制
Golang 包管理机制 1. 历史 在go1.11之前, 并没有官方的包管理机制(Godep算个半官方), 主流的包管理机制有: GoVendor Glide Godep 在go1.11之后, 官方 ...
- Golang 包了解以及程序的执行
Golang 包了解以及程序的执行 引言 Go 语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案.Go 语言中为我们提供了很多内置包,如 fmt.o ...
- IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习
相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...
- Hadoop工程包架构解析
Hadoop源码解析 1 --- Hadoop工程包架构解析 1 Hadoop中各工程包依赖简述 Google的核心竞争技术是它的计算平台.Google的大牛们用了下面5篇文章,介绍了它们的计算 ...
- go语言的安装和配置,以及包引用
1.下载和安装 首先大家可以去官网下载 http://golang.org/dl/ 如果官网你看不懂的话,可以到这里下载: http://golangtc.com/download ,这里也提供了百度 ...
- Golang 包管理简介
Golang 包管理 在一个项目里,如果想引用本地包,经常会把新手搞的莫名其妙.这里通俗记录一下. 首先先要知道几个默认的规则 必须定义环境变量GOPATH,GOPATH可以定义多个目录 所有项目代码 ...
- Golang包管理工具glide简介
Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...
随机推荐
- JAVA的对称加密算法AES——加密和解密
出自: http://blog.csdn.net/hongtashan11/article/details/6599645 http://www.cnblogs.com/liunanjava/p/42 ...
- Elasticsearch之插件介绍及安装
ES站点插件(以网页形式展现) 1.BigDesk Plugin (作者 Lukáš Vlček) 简介:监控es状态的插件,推荐![目前不支持2.x] 2.Elasticsearch Head Pl ...
- Path expected for join!的解决办法
Path expected for join! [SELECT count(*) FROM cn.com.jsoft.entities.TDSysnphoto p left join TDSysnot ...
- Unity3D Asset 导入&导出
[Unity3D Asset 导入&导出] 通过Assets->Export Package..菜单可以导出当前选中Assets.若没有选中Assets,则会导出全部assets. 在弹 ...
- 内存cache使用的场景
Q.业务场景内为什么要使用内存cache? A.为了利用内存cache的优点, 解决业务场景内的缺陷 Q.内存cache的优点和缺点 A.优点: 内存读写速度比磁盘块 缺点: 内存空间有限, 内存单价 ...
- 关于ptrdiff_t
整除.opencv中的内存一般是通过malloc分配,不能保证都是都能被16整除,此时需要截断,但是剩下的内存要如何维护? CV2.0的这样维护的:在 malloc 是多申请一个指针的空间,这个指针指 ...
- ROS indigo Ubuntu14.04 安装问题
错误信息:Unpacking ros-indigo-desktop-full (1.1.6-0trusty-20181006-135515-0800) ... Errors were encounte ...
- 【转载】Python BeautifulSoup匹配字符串
作者:鸡仔说链接:https://www.jianshu.com/p/ceb99aed4b2e來源:简书 BeautifulSoup中可以通过name和attrs去定位名称和属性,以找到特定的html ...
- 类操作,removeClass&addClass
// 添加类 function addClass(node,className){ var reg=new RegExp("\\b"+classNa ...
- 整合Office Web Apps至自己的开发系统
原文出处:http://www.cnblogs.com/poissonnotes/p/3267190.html 还可参考:https://www.cnblogs.com/majiang/p/36729 ...