go get...在本地目录中安装软件包(带有软件包)的最佳做法是什么?
示例:我想试用Revel Web框架,但我不想把我的go安装混乱/usr/local/go.
通常我会说sudo go get github.com/robfig/revel在主页上写的,但是会把它安装在下面/usr/local/go/src/pkg/....
是否有一种简单的方法可以说(例如)go get --local ...并将包放在当前(子)目录中?
我在linux/amd64盒子上编译了以下Go程序:
package main
import (
"fmt"
"os/user"
)
func main() {
fmt.Println(user.Current())
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是当我从Mac框交叉编译它时,我在我的linux盒子上运行该程序时出现以下错误:
user: Current not implemented on linux/amd64
如何交叉编译并使用包中的Current函数os/user?
编辑1:我应该补充一点,这些是我用来在Mac机上设置交叉编译的说明:https://code.google.com/p/go-wiki/wiki/WindowsCrossCompiling
编辑2:交叉编译windows/386工作正常.
我想path.Dir()在Unix和Windows上使用特定于平台的目录.请看一下代码:
package main
import (
"fmt"
"path"
)
func main() {
fmt.Println(`path.Dir("a/b/c"): `, path.Dir("a/b/c"))
fmt.Println(`path.Dir("c:\foo\bar.exe"): `, path.Dir(`c:\foo\bar.exe`))
}
Run Code Online (Sandbox Code Playgroud)
这输出
path.Dir("a/b/c"): a/b
path.Dir("c:\foo\bar.exe"): .
Run Code Online (Sandbox Code Playgroud)
我想第二次打电话给path.Dir()(windows)类似的东西
c:\foo
Run Code Online (Sandbox Code Playgroud)
是否可以告诉path.dir()我在Windows上运行的程序使用Windows分隔符?或者我应该始终将反斜杠转换\ 为正斜杠(/)?这里的首选策略是什么?
我想在文件系统中使用默认应用程序打开PDF文件.我怎样才能做到这一点?从命令行我只需编写pdf文件的文件名,然后打开应用程序(带有请求的文件).当我尝试使用时,exec.Command()我得到一个错误(不足为奇)exec: "foo.pdf": executable file not found in %PATH%.
package main
import (
"log"
"os/exec"
)
func main() {
cmd := exec.Command("foo.pdf")
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
err = cmd.Wait()
if err != nil {
log.Fatal(err)
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用快递,我想提供生成的图像.html源代码<img src="/generated/image">和路由设置所以当调用GETto 时/generated/image,会创建一个PNG(例如,放在公共目录中,但我想这不是绝对必要的).现在我想将该图像发回给用户.我应该res.send()用于此目的吗?如何将数据提供给用户?
我是redigo连接从Go到redis数据库.如何将一种类型转换[]interface {}{[]byte{} []byte{}}为一组字符串?在这种情况下,我想得到两个字符串Hello和World.
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", ":6379")
defer c.Close()
if err != nil {
fmt.Println(err)
}
c.Send("SADD", "myset", "Hello")
c.Send("SADD", "myset", "World")
c.Flush()
c.Receive()
c.Receive()
err = c.Send("SMEMBERS", "myset")
if err != nil {
fmt.Println(err)
}
c.Flush()
// both give the same return value!?!?
// reply, err := c.Receive()
reply, err := redis.MultiBulk(c.Receive())
if err != nil {
fmt.Println(err) …Run Code Online (Sandbox Code Playgroud) 我git为我的软件使用版本控制系统.在"源代码"中,我go get用来自动从github获取软件.我该如何处理"双git"情况?
当我git add在目录上运行时src/github.com/somename/someproject,这本身就是一个git存储库,这会添加什么吗?(我跑的时候看起来不像这样git status)
我应该git submodule用于git get添加的子目录吗?
在这种情况下,最佳做法是什么?
编辑:$GOPATH我的软件项目有一个自定义环境.这就是src/github.com/somename/someproject在我的软件目录层次结构中找到该目录的原因.
我试图找到Windows安装上的字体文件夹.AFAICS所提出的方法是调用SHGetKnownFolderPath在Shell32.dll与KNOWNFOLDERID设置为FOLDERID_Fonts.
我不知道Call在下面的代码中传递给函数的是什么:
package main
import (
"syscall"
)
func main() {
// HRESULT SHGetKnownFolderPath(
// _In_ REFKNOWNFOLDERID rfid,
// _In_ DWORD dwFlags,
// _In_opt_ HANDLE hToken,
// _Out_ PWSTR *ppszPath
// );
var (
shell32 = syscall.NewLazyDLL("Shell32.dll")
shGetKnowFolderPath = shell32.NewProc("SHGetKnownFolderPath")
// Doesn't work, of course:
folderId int
flags int
handle int
retval int
)
shGetKnowFolderPath.Call(uintptr(folderId), uintptr(flags), uintptr(handle), uintptr(retval))
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?(我想现在的解决方法是坚持%windir%\Fonts,但我想得到一个合适的解决方案).
参考文献:
有2个UITextField和登录按钮的视图.当用户处于密码文本框键盘时,返回键设置为"Go".如何设置返回键以从"登录"按钮进行操作,以便用户无需关闭键盘并触摸"登录"按钮?
Thanx提前回复.
我想通过XSLT将给定的XML文件(它是一个RelaxNG语法)翻译成其他语言.假设XML文件是:
<?xml version="1.0" encoding="UTF-8"?>
<grammar>
<element name="table" />
<element name="chair" />
</grammar>
Run Code Online (Sandbox Code Playgroud)
现在我正在考虑使用带有类似信息的XSLT样式表
en=table, de=Tisch, fr=table
en=chair, de=Stuhl, fr=chaise
... (there will be many, many more entries)
Run Code Online (Sandbox Code Playgroud)
但我也可以把这些信息放到外部文件中(我从头开始).你能给我一些如何制定XSLT的建议吗?我正在考虑使用<xsl:key>这个,但我从来没有在XSLT中获得密钥.当我创建德语翻译时,结果应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<grammar lang="de">
<element name="Tisch" />
<element name="Stuhl" />
</grammar>
Run Code Online (Sandbox Code Playgroud)