Because I forgot to install the Chinese input in this OS, I have to use English input.

The first problem which I ran into is "how to import the local file in Golang"

First, it may be my fault but I really didn't see any documents say that if you want to import a local file in another Go file, you should create a folder to put the imported file. Below is my case:

I created a file said "example2.go", then typed some codes:

package math

func Add(a, b int) int {
return a + b
}

I wanted to import it in another file said "example1.go"

package main

import (
"fmt"
"./example2"
) func main() {
fmt.Println("Hello Go!")
fmt.Println(math.Add(,))
}

when I tried to run the example1.go file, the go runtime threw an error said "couldn't find the example2". what's the problem? Is GOPATH not set? Is example2.go not compiled? Finally, I found it is the folder structure problem. My orignal folder structure likes this

Goworkspace
- pkg
- src
- example1.go
- example2.go
- bin

But Go 1.4 doesn't support import a single file as a package. So I have to put the "example2.go" in a folder said "package2"

Goworkspace
- pkg
- src
- example1.go
- package2
- example2.go
- bin

then change the code

package main

import (
"fmt"
"package2"
) func main() {
fmt.Println("Hello Go!")
fmt.Println(math.Add(,))
}

it works. So it means a package always refers to a folder in the Golang. But you may notice that the package name isn't same as the folder name. In Golang, when you use import keyword to import a package. There is two things will happen

1. Golang to find the package file location

2. Parse the package structure for using

So, the first thing is you should use a folder to indicate the package file location. Then you can go to use package by name.

Another thing is a package can accross multiple files, it looks like below

Goworkspace
- pkg
- src
- example1.go
- package
- example2.go
- example3.go
-bin

The example2 and example3 files are under the same package. Below is the codes

//-- example3.go--
package math func Sub(a, b int) int {
return a - b
} func AddASubB(a, b int) int {
c := Add(a, b)
return c - b
} //-- example2.go ---
package math func Add(a int, b int) int {
return a+b
}

You may notice AddASubB function invoked the example2.go's Add function, but I didn't import anything. Yes, if the function under the same package, you can invoke it directly no matter it's export or not. But the most import thing is the package must be imported in some where. If you write a file said example4.go under the main package, then you want to invoke the function in exampl1.go file. It will be failed. Because no place to trigger the import main package operation. 

这里有篇文章讲Go包的管理机制:http://io-meter.com/2014/07/30/go%27s-package-management/

First glance in Go的更多相关文章

  1. 理解 Glance - 每天5分钟玩转 OpenStack(20)

    OpenStack 由 Glance 提供 Image 服务. 理解 Image 要理解 Image Service 先得搞清楚什么是 Image 以及为什么要用 Image? 在传统 IT 环境下, ...

  2. 解决在CentOS6.5下安装OpenStack(Icehouse版本 )出现的glance服务无法正常工作的问题

    最近一直在用Juno版本,因为项目需要,今天在虚拟机里安装了Icehouse版,其中glance组件在执行安装的过程后,出现启动失败的现象,幸好以前排查过此类错误,遂记录如下: 在官方文档(Iceho ...

  3. 4.openstack之mitaka搭建glance镜像服务

    部署镜像服务 一:安装和配置服务 1.建库建用户 mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* T ...

  4. Ceph与OpenStack的Glance相结合

    http://docs.ceph.com/docs/master/rbd/rbd-openstack/?highlight=nova#kilo 在Ceoh的admin-node上进行如下操作: 1. ...

  5. 探索 OpenStack 之(10):深入镜像服务Glance

    本篇博文来探讨下镜像服务Glance. 0.  基本概念 0.1 基本功能 Glance提供REST API来支持以下镜像操作: 查询 注册 上传 获取 删除 访问权限管理 0.2 Glance RE ...

  6. 【OpenStack】OpenStack系列4之Glance详解

    下载安装 参考:http://www.linuxidc.com/Linux/2012-08/68964.htm http://www.it165.net/os/html/201402/7246.htm ...

  7. 这个Glance的界面该怎么看出问题,为什么状态是SOCKT?

    这个glance的状态图有问题吗?

  8. Centos7 install Openstack - (第三节)添加镜像服务(Glance)

    Centos7 install Openstack - (第三节)添加镜像服务(Glance) 我的blog地址:http://www.cnblogs.com/caoguo 该文根据openstack ...

  9. OpenStack:安装Glance

    >安装Glance1. 安装# apt-get install glance python-glanceclient删除sqlite文件rm -f /var/lib/glance/glance. ...

  10. How a woman's glance can tell a man if she's interested

    How a woman's glance can tell a man if she's interested揭秘:女人是否喜欢你?看眼神就知道The female mind has always b ...

随机推荐

  1. Java---Java的面试题(二)

    1 Switch能否用string做参数?在 Java 7 之前, switch 只能支持byte,short,char,int 或者其对应的封装类以及 Enum 类型.在JAVA 7中,String ...

  2. 第 29 章 CSS3 弹性伸缩布局[中]

    学习要点: 1.混合过度版 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS3 提供的用来实现未来响应式弹性伸缩布局方案,这里做一个初步的了解. 一.混合过渡版 混合版本的 Flexbox 模型 ...

  3. MUI(4)

    今天感觉无聊,想听一首音乐.没有添加其他页面,只是在index_list.html页面进行代码添加而已. <!doctype html> <html> <head> ...

  4. HDU 5792---2016暑假多校联合---World is Exploding

    2016暑假多校联合---World is Exploding Problem Description Given a sequence A with length n,count how many ...

  5. Spring发展历程总结

    目前很多公司的架构,从Struts2迁移到了SpringMVC.你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢? 既然这样,我们从源头说起.Stru ...

  6. HTML5开发IDE介绍

    开发html5的工具可供选择的有:Intellij Idea.Eclipse.WebStorm三个软件.在PC端与手机端,同步测试HTML5网页.测试发布软件:FileZilla JavaScript ...

  7. 操作系统笔记系列 一 Linux

    学习资料: 1.http://www.icoolxue.com/   马士兵 1.Linux 服务器端,目前98%的服务器都是Linux. 2.

  8. 【FOL】第一周

    本来打算按计划做下去的,发现原来那个sprite虽然功能强大,但是对我想要做的东西来说,冗余似乎有些多,决定自己写一个. 之前做了一段时间的h5游戏,用的是panda.js,发现这个引擎封装的还不错, ...

  9. Java的自动递增和递减

    和C 类似,Java 提供了丰富的快捷运算方式.这些快捷运算可使代码更清爽,更易录入,也更易读者辨读.两种很不错的快捷运算方式是递增和递减运算符(常称作"自动递增"和"自 ...

  10. SQL join中on与where区别

    本文导读: 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户.例如在使用left jion时,on条件是在生成临时表时使用的条件,它不管on中的条件是否 ...