在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)}

golang的哪些坑爷事: package实践的更多相关文章

  1. golang初试:坑爷的

    用Golang与perl脚本比较, 初想至多差一倍吧...结果可不是一般的坑爹, 简直就是坑爷了. Perl脚本 #!/bin/bash source /etc/profile; function e ...

  2. Golang中的坑二

    Golang中的坑二 for ...range 最近两周用Golang做项目,编写web服务,两周时间写了大概五千行代码(业务代码加单元测试用例代码).用Go的感觉很爽,编码效率高,运行效率也不错,用 ...

  3. Golang 中的坑 一

    Golang 中的坑 短变量声明  Short variable declarations 考虑如下代码: package main import ( "errors" " ...

  4. Golang的防坑小技巧

    Golang的防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名小白,在之前没有接触到编程的小伙伴,难免会踩到一些坑,比如说刚刚入门的时候你需要安装环境,学习Gol ...

  5. Golang在视频直播平台的高性能实践

    http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量 ...

  6. 初学者学习golang可能遇到的坑

    我也是个golang初学者,刚入门的话,有些"坑"还是不好发现的.如map只是定义了然后就拿来使用,变量的值覆盖等. 本来打算写一篇的,后面发现有人写的挺不错的,我就把里面的有些坑 ...

  7. golang基础知识之encoding/json package

    golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...

  8. Golang的select多路复用以及channel使用实践

    看到有个例子实现了一个类似于核弹发射装置,在发射之前还是需要随时能输入终止发射. 这里就可以用到cahnnel 配合select 实现多路复用. select的写法用法有点像switch.但是和swi ...

  9. golang:send mail using smtp package

    go语言发送邮件,可以使用smtp包,两个关键函数: func PlainAuth(identity, username, password, host string) Auth func SendM ...

随机推荐

  1. 合并同一目录下多个EXCEL的多个sheet

    合并同一目录下多个EXCEL的多个sheet到一个excel的一个sheet 1.把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel2.打开新建的excel表,并右键单击s ...

  2. php curl 提交 总结

    1.post https提交 方法 function curl_post2($url='', $postdata='', $options=array()){ $ch = curl_init($url ...

  3. asp.net(c#)中如何在前端用js写条件查询,且不用调用存储过程

    前端页面(源): <dx:ASPxButton ID="ASPxButton_Select" runat="server" Text="查询&q ...

  4. linux下的tomcat自动退出的问题

    1,环境:mysql+tomcat+linux 2,发现问题:连接池断开连接 No operations allowed after connection closed 连接池断开了,再进行连接就报错 ...

  5. Struts2使用ModelDriven后JSON数据返回不正确

    在struts.xml中加入<param name="root">action</param> <result name="exist&qu ...

  6. WPF和WINFORM的互操作

    在WPF中使用Winform控件 <Window x:Class="WPFApplication.Window1" xmlns="http://schemas.mi ...

  7. 使用/proc实现内核与用户空间通信

    1. 前言   Linux内核空间与用户空间的通信可通过"/proc"目录的文件读写来实现,如果只是控制内核中的参数而不是传输较多数据的话,用“/proc”是很合适的.另外一种内核 ...

  8. c++ builder ListView实现可编辑任意列(转)

    // --------------------------------------------------------------------------- // Form的构造函数中填充StrinG ...

  9. 通过string型类名实例化一个类

    DataTable dt = new DBHelper().getIndexInfo(code_id); DataRow row = dt.Rows[0]; string dllName = row[ ...

  10. 手机连上wifi热点后自动弹窗的功能

    使用buildroot编译bind DNS服务器 用buildroot来制作文件系统很方便,编译出来的文件系统是直接可用的,不用添加脚本等麻烦的工作,很多的库和app都可以直接添加到文件系统里边,如常 ...