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\test1
  • F:\workspace\go_home\src\test2

test1test2 这是两个不同的项目. 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包引用解析的更多相关文章

  1. golang包引用

    一.我的GOPATH环境变量值如下图: 二.在GOPATH路径下面的的src目录下面的目录名称就是引用里面包的起始位置,如下图: 三.举例说明:这里引用同一个项目的包,源文件“learn/main/m ...

  2. golang reflect包使用解析

    golang reflect包使用解析 参考 Go反射编码 2个重要的类型 Type Value 其中Type是interface类型,Value是struct类型,意识到这一点很重要 Type和Va ...

  3. Golang 包管理机制

    Golang 包管理机制 1. 历史 在go1.11之前, 并没有官方的包管理机制(Godep算个半官方), 主流的包管理机制有: GoVendor Glide Godep 在go1.11之后, 官方 ...

  4. Golang 包了解以及程序的执行

    Golang 包了解以及程序的执行 引言  Go 语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案.Go 语言中为我们提供了很多内置包,如 fmt.o ...

  5. IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习

    相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...

  6. Hadoop工程包架构解析

    Hadoop源码解析 1 --- Hadoop工程包架构解析 1 Hadoop中各工程包依赖简述    Google的核心竞争技术是它的计算平台.Google的大牛们用了下面5篇文章,介绍了它们的计算 ...

  7. go语言的安装和配置,以及包引用

    1.下载和安装 首先大家可以去官网下载 http://golang.org/dl/ 如果官网你看不懂的话,可以到这里下载: http://golangtc.com/download ,这里也提供了百度 ...

  8. Golang 包管理简介

    Golang 包管理 在一个项目里,如果想引用本地包,经常会把新手搞的莫名其妙.这里通俗记录一下. 首先先要知道几个默认的规则 必须定义环境变量GOPATH,GOPATH可以定义多个目录 所有项目代码 ...

  9. Golang包管理工具glide简介

    Golang包管理工具glide简介 前言 Golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论, ...

随机推荐

  1. python 模块 optparse

    optparse,是一个能够让程式设计人员轻松设计出简单明了.易于使用.符合标准的Unix命令列程式的Python模块.生成使用和帮助信息. 下面是一个简单的示例: import optparse p ...

  2. Collision Detection

    [Collision Detection] Collision Detection是Rigidbody中的一个属性.所以显然Collision Detection指定的类型只在Rigidbody之间才 ...

  3. mysql 基本操作 alter

    查看数据库 show  databases; 新建数据库 命令 create database 库名字. 选择数据库 use  2016test; 创建表:create table 表名(字段1,2, ...

  4. 243. Shortest Word Distance 最短的单词index之差

    [抄题]: Given a list of words and two words word1 and word2, return the shortest distance between thes ...

  5. mysql sandbox的问题备忘

    工具很好用,但是安装运行时有些小问题: 1.启动数据库时提示--bootstrap已禁用:那是mysql5.7以后废弃了此参数,改用--initialize来初始化了,而一般公共仓库里的sandbox ...

  6. pip指定安装包版本

    pip是目前最好用的python包关系工具,没有之一. 1.版本范围符号:==.>=.<=.>.<. 2.单个安装示例: 1 2 3 pip install cchardet  ...

  7. jqgrid常用操作

    .jqgrid控件列在需要的地方加上edittable=true <asp:JQGrid runat=" DataUrl="/ccr/CcrCompanyPromoterMa ...

  8. 在使用webstorm打开本地项目文件夹的html文件时,浏览器提示404错误

    错误原因:在使用webstorm打开本地项目文件夹的html文件时,浏览器提示404错误. 错误分析:文件夹命名内包含“+”,此特殊符号导致浏览器解析错误. 改正方案:去掉特殊符号“+”

  9. maven的pom文件解析及配置

    1.IDEA中的Maven的pom.xml文件,其实比较通俗点介绍功能主要项目引入的jar包,管理配置项目以及一些插件的配置等项目 2.对于pom配置详细介绍,整理如下2篇文档介绍的比较系统全面: h ...

  10. 解决"要执行请求的操作,WordPress需要访问您网页服务器的权限"

    比如我们在VPS主机中创建WordPress站点的时候,会有需要在线安装主题.插件等,但是点击下载安装的时候会有"要执行请求的操作,WordPress需要访问您网页服务器的权限. 请输入您的 ...