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. RabbitMQ入门教程——工作队列

    什么是工作队列 工作队列是为了避免等待一些占用大量资源或时间操作的一种处理方式.我们把任务封装为消息发送到队列中,消费者在后台不停的取出任务并且执行.当运行了多个消费者工作进程时,队列中的任务将会在每 ...

  2. <if><else/></if> 语句

    <li> <if condition="$nid eq 'partner'"> <a href="javascript:void(0);&q ...

  3. 【Java每日一题】20161013

    package Oct2016; public class Ques1013{ public static void main(String[] args){ new Obj(); } } class ...

  4. 第 19 章 CSS 其他样式

    学习要点: 1.颜色和透明度 2.盒子阴影和轮廓 3.光标样式 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 其他剩下几个常用的样式,包括颜色.透明度.盒子的阴影轮廓以及光标的样式. 一.颜 ...

  5. 你知道什么是Grunt么?

    一句话,Grunt是前端的Maven.它是JavaScript世界的构建工具. 1. 首先安装node.js,由于Grunt需要依赖于node.js的npm来管理和安装.最终检测安装node.js成功 ...

  6. POJ 1811 大素数判断

    数据范围很大,用米勒罗宾测试和Pollard_Rho法可以分解大数. 模板在代码中 O.O #include <iostream> #include <cstdio> #inc ...

  7. [javaEE] 反射-通过反射了解集合泛型本质

    java中的泛型是防止错误输入的,只在编译时刻起作用 package com.tsh.reflect; import java.lang.reflect.Method; import java.uti ...

  8. Java知识体系

    Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...

  9. python学习笔记3(元组、字典)

    Python中有三种内置的数据类型.dictionary(字典).List(列表)和tuple(元组). 元组(tuple) 只读列表(列表的值可以修改,元组的不可以) 元组与列表类似,不同之处在于元 ...

  10. SQL 行列转换简单示例

    SQLSERVER 2005 以后提供了新的方式进行行列转换,下面是一个实例供参考: if object_id('tb') is not null drop table tbTest go ),季度 ...