为多个Go包限制资源使用

huangapple go评论79阅读模式
英文:

Package bound resource use for multiple go packages

问题

一个人为的例子:

我有两个包,repo.com/alpha/A和repo.net/beta/B。包A使用包B,两者都按照示例结构化。

A:
    main.go

B:
    b.go
    templates \
        1.tmpl
        2.tmpl

在包A的main.go中,我需要访问包B的templates目录。

b.go

var templates string

templates = templatepath

func init(){
    templatepath, _ = filepath.Abs("./templates")
}

main.go

import(
    repo.net/beta/B
)

func main(){
   fmt.Printf("%s", B.templates)
}

所以问题在于,对于我更复杂的用例和这里的人为例子,B.templates将位于包A的目录中,而我需要建立和引用导入路径的目录。这是学习和导航Go方式的一部分,我的理解可能很基础,所以我需要了解如何在Go上下文中做到这一点。

我的用例是一个使用其他为基本包做事情的包,这些外部包可能使用标准的Web资源文件(css、html、js),问题在于我在打包和引用它们时遇到了一些困难,无法以足够抽象的方式实现我想要做的事情。

英文:

For a contrived example:

I have 2 packages, repo.com/alpha/A & repo.net/beta/B. package A uses package B, both structured as example.

A:
    main.go

B: 
    b.go
    templates \
        1.tmpl
        2.tmpl

In main.go of package A, I'd need to access the templates directory of package B.

b.go

var templates string

templates = templatepath

func init(){
    templatepath, _ = filepath.Abs("./templates")
}

main.go

import(
    repo.net/beta/B
)

func main(){
   fmt.Printf("%s", B.templates)
}

So the problem being in my more complex use case & the contrived example here is that B.templates will be in the directory for package A, where I need to establish and reference the directory of the imported path. This is part of learning and navigating the Go way of doing things, and my understanding is probably basic, so I need to understand how to do this in a Go context.

My use case is a package that uses other packages that do things for the base package, and these external packages may use standard web resources files(css, html, js) the problem being I'm having immediate trouble packaging and referencing them abstractly enough for what I want to do.

答案1

得分: 1

你不能直接这样做,你要么使用类似go-bindata的工具,要么将模板作为常量嵌入到你的B包中。

tmpl1.go:

const tmpl1 = `........`
英文:

You can't, you have to either use something like go-bindata or so, or simply embed the templates in your B package as consts.

tmpl1.go:

const tmpl1 = `........`

huangapple
  • 本文由 发表于 2014年8月7日 21:19:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/25183656.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定