在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把.

关于golang的package的最佳实践:

package is folder.

package name is folder name.

package path is folder path.

信耶稣得永生!

 

1. 同一个folder存在不同package, 编译错误:

D:/go/bin/go.exe build [E:/cgss/src/pkg01]

can't load package: package pkg01: found packages pkg01 (pkg01.go) and pkg012 (pkg02.go) in E:\cgss\src\pkg01

在同一个folder存在多个package, 则加载失败. 即使是main, 也一样

D:/go/bin/go.exe build [E:/cgss/src/test]

can't load package: package test: found packages main (cgss.go) and file01 (file01.go) in E:\cgss\src\test

2. folder name与package name不同(即package path与package name不同), 则需要使用

"import alias path"语法, 即:

import <package_name> <package_path>

否则编译错误: package name不是合法标识符.

D:/go/bin/go.exe build [E:/cgss/src/test]

can't load package: package test: found packages main (cgss.go) and file01 (file01.go) in E:\cgss\src\test

package main
import "fmt"import pkg012 "pkg01"
func main() { fmt.Println(pkg012.PKG_NAME)}

最新文章

  1. ASP.NET MVC RenderPartial和Partial的区别
  2. arcmap配置的mxd慢的问题
  3. mac上的git completion
  4. EnumHelper枚举常用操作类
  5. How to install ruby on mac/ change ruby source in china
  6. alue of type java.lang.String cannot be converted to JSONObject
  7. mysql数据库在Navicat Premium连接的时候出现1862错误
  8. sql server遍历表不用游标和临时表的方法
  9. Linux设备驱动中的ioctl
  10. PHP获取文件扩展名的五种方式
  11. RESTful WebService 入门实例
  12. WinForm界面设计-Button添加背景图去边框
  13. GCC后端移植杂记
  14. Leetcode(一)两数之和
  15. C语言中getch()、getche()和getchar()
  16. 通过T4模板实现代码自动生成
  17. 单元测试使用spring注解获取bean
  18. sublime 设置侧边栏颜色
  19. MySQL监控、性能分析——工具篇(转载)
  20. 简单实现JS上传图片预览功能

热门文章

  1. [oracle] listener.ora 、sqlnet.ora 、tnsnames.ora
  2. Ossim主要功能实战
  3. ajax 跳入error的一些原因
  4. PAT1013
  5. AX 条码打印
  6. Oracle笔记 目录索引
  7. Linux设备驱动开发环境的搭建(转)
  8. jQuery层级元素选择器
  9. 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境
  10. Tornado小记 -- 模板中的Handler