golang的哪些坑爷事: package实践

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

时间: 2024-10-13 21:14:02

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

golang初试:坑爷的

用Golang与perl脚本比较, 初想至多差一倍吧...结果可不是一般的坑爹, 简直就是坑爷了. Perl脚本 #!/bin/bash source /etc/profile; function extractAndZip(){        _debug "$FUNCNAME,[email protected]";        local logFile="${2}"        local gzipFile="${1}"       

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

http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量与重要性比较高,所以成为 golang 小试牛刀的首批高性能高并发服务.Golang在视频直播平台的高性能实践(含PPT下载)把大服务拆细, 然后服务化独立部署,更容易简化部署,也容易单点细节优化与升级.多数服务的能力是通用的,如平滑重启.多机房部署等.Golang在视频直播平台的高性能实践(含PP

seajs的那点事(很坑的事),和本白的一点事(更坑的事)

在开始之前,偶先吐槽加逗比一下,2天前,CCAV的本白和百度的菊花成功潜入到了携程大楼 然后在没有找到他们运维的情况下,四处乱逛,企图把他们的服务器给root一下,然后再瞎逛之后到了一个很神奇的地方 然后遇到了一堆企图把他们服务器给root的人 然后大门一关...pong!pong!pong!pong!pong!当我们认为携程保安会把我关起来的时候 开始了第二届css大会!!! 在大会上偶和菊花2人坐在一个角落的地上,撸着代码!然后互相交流了,最近在搞得B格.. 菊花:“偶最近在写文章” 本白:

Golang在视频直播平台的高性能实践(含PPT下载)

熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量与重要性比较高,所以成为 golang 小试牛刀的首批高性能高并发服务. 把大服务拆细, 然后服务化独立部署,更容易简化部署,也容易单点细节优化与升级.多数服务的能力是通用的,如平滑重启.多机房部署等. 关于在线服务,如果 1000 万用户在线,即使每 30 秒一次在线 http 发送打点,那么也有每秒 30 万+的接口 qps. Golang 提供的 http server 性

一次golang fasthttp踩坑经验

一个简单的系统,结构如下: 我们的服务A接受外部的http请求,然后通过golang的fasthttp将请求转发给服务B,流程非常简单.线上运行一段时间之后,发现服务B完全不再接收任何请求,查看服务A的日志,发现大量的如下错误 从错误原因看是因为连接被占满导致的.进入服务A的容器中(服务A和服务B都是通过docker启动的),通过netstat -anlp查看,发现有大量的tpc连接,处于ESTABLISH.我们采用的是长连接的方式,此时心里非常疑惑:1. fasthttp是能够复用连接的,为什

golang 兼容不同json结构体解析实践

线上服务器,同一个web接口有时需要兼容不同版本的结构体.这种情况思路是使用interface{}接收任意类型数据,结合reflect包处理. 如下,http接口调用者会传入不同的json结构数据(单体结构或切片结构): type ReqStu struct { XXX struct { //XXX结构为单体 AAA string `json:"aaa"` BBB string `json:"bbb"` CCC string `json:"ccc"

在go modules中使用replace替换无法直接获取的package(golang.org/x/...)

上一篇里我们介绍了使用go get进行包管理. 不过因为某些未知原因,并不是所有的包都能直接用go get获取到,这时我们就需要使用go modules的replace功能了.(当然大部分问题挂个梯子就能解决,但是我们也可以有其它选项) 使用replace替换package replace顾名思义,就是用新的package去替换另一个package,他们可以是不同的package,也可以是同一个package的不同版本.看一下基本的语法: go mod edit -replace=old[@v]

golang 项目实战简明指南

原文地址 开发环境搭建 golang 的开发环境搭建比较简单,由于是编译型语言,写好 golang 源码后,只需要执行 go build 就能将源码编译成对应平台(本文中默认为 linux)上的可执行程序.本文不再赘述如何搭建 golang 开发环境,只说明下需要注意的地方. 从官网下载对应平台的 golang 安装包中包括 golang 的编译器.一些工具程序和标准库源码.早期的 golang 版本中,需要设置 GOROOT 和 GOPATH 两个环境变量. 从 1.8 版开始,GOPATH

Mybatis-Plus的填坑之路 - Lynwood/wunian7yulian

html { } :root { } html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif } body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0p