小编The*_*hat的帖子

将GO源代码上传到谷歌应用引擎?

我想知道源代码是上传还是只是二进制/编译版本?GAE工程师可以访问我宝贵的源代码吗?

google-app-engine go

5
推荐指数
2
解决办法
168
查看次数

为什么纵梁找不到包裹?

知道如何解决以下错误?我有一个go生成器(stringer),我尝试运行但它仍然报告它无法找到包导入,虽然包是肯定导入的.

stringer: checking package: main.go:13:3: could not import example.io/api/util (can't find import: example.io/api/util)
main.go:33: running "stringer": exit status 1
Run Code Online (Sandbox Code Playgroud)

go

4
推荐指数
1
解决办法
1541
查看次数

如何过滤GAE查询?

我正在尝试保存两条记录,然后获得第二条记录.问题是过滤器似乎不起作用.虽然我按名称("安德鲁W")过滤,但我总是得到"Joe Citizen".计数器还指示2个记录,它应该只是一个.这让我发疯了.请参阅下面的完整代码.结果打印出来counter 2 e2 {"Joe Citizen" "Manager" "2015-03-24 09:08:58.363929 +0000 UTC" ""}

package main
import (
    "fmt"
    "time"
    "net/http"

    "google.golang.org/appengine"
    "google.golang.org/appengine/datastore"
)


type Employee struct {
    Name     string
    Role     string
    HireDate time.Time
    Account  string
}
func init(){

    http.HandleFunc("/", handle)
}
func handle(w http.ResponseWriter, r *http.Request) {
    c := appengine.NewContext(r)

    e1 := Employee{
        Name:     "Joe Citizen",
        Role:     "Manager",
        HireDate: time.Now(),
    }

    _, err := datastore.Put(c, datastore.NewKey(c, "employee", "", 0, nil), &e1)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    panic(err) …
Run Code Online (Sandbox Code Playgroud)

google-app-engine go google-cloud-datastore

4
推荐指数
1
解决办法
693
查看次数

如何在 Go 模板中使用“或”与管道?

如何将“或”运算符与多个比较参数一起使用,或者有什么想法可以找到一些示例?官方文档上好像没有。

if (x == "value" && y == "other") || (x != "a") && (y == "b"){
  print("hello")
}
Run Code Online (Sandbox Code Playgroud)

templates go

4
推荐指数
1
解决办法
2万
查看次数

如何使用反射提取接口类型名称和包?

我需要使用反射知道类型名称及其路径。typeType有一个 Name() 和 PkgPath() 方法,但如果该类型是一个接口,则它们都返回空。

但是,如果我反映一个函数并提取其参数的类型信息,我会得到正确的类型信息。我应该假设这是前一种情况的错误吗?无论上下文如何(例如类型函数参数或值的类型),TypeOf 不应该返回相同的类型信息吗?

我知道类型断言,但我并不总是有一个值来执行断言,因此我需要使用 Reflect.Type 信息。

package main

import (
    "fmt"
    "reflect"
    "golang.org/x/net/context"
)

func main() {
    c := reflect.TypeOf(withValue(""))
    fn := func(context.Context){}
    fc := reflect.TypeOf(fn).In(0)
    fmt.Println(isContext(c),  isContext(fc), c, fc)
}

func isContext(r reflect.Type) bool {
    return r.PkgPath() == "golang.org/x/net/context" && r.Name() == "Context"
}


func withValue(v interface{}) context.Context {
    return context.WithValue(context.TODO(), "mykey", v)
}
Run Code Online (Sandbox Code Playgroud)

印刷

false true *context.valueCtx context.Context
Run Code Online (Sandbox Code Playgroud)

reflection go

4
推荐指数
1
解决办法
7610
查看次数

随机生成器匹配正则表达式?

是否有任何 go 包接收正则表达式作为输入并返回与该正则表达式匹配的随机字符串,或者您可以指导我如何实现这样的解决方案吗?

我的第一个想法是从 /dev/rand 循环生成随机字节,然后返回与正则表达式匹配的字节,但我认为这种强力方法会非常耗时,直到我找到一个与正则表达式匹配的字符串。

使用案例:

我计划将其用于 Web 服务测试库。

  • 一些 API 调用(例如注册用户帐户)需要独特的字段(例如电子邮件地址、电话号码等),因此需要基于模式/正则表达式的随机输入生成器。

  • 随机属性还有助于防止陈旧数据/误报(即在当前测试套件之前存储的数据)。我猜生成器不需要提供加密级别的随机性,而是需要提供 GUID 之类的东西。

regex go

4
推荐指数
1
解决办法
3124
查看次数

是否可以从包中仅导入一个函数?

有时我只需要一个包中的函数,因此导入整个包似乎不是性能明智的.因此问题是:是否可以只导入一个函数?

import go

3
推荐指数
1
解决办法
1522
查看次数

如何在Go中解组YAML

我很难在Go中解组这片YAML.我得到的错误是cannot unmarshal !!seq into map[string][]map[string][]string.我已经尝试了所有类型的地图都没有成功(map [string] string; [] map [string] string等)

import (
    "gopkg.in/yaml.v1"
    "io/ioutil"
)

type AppYAML struct {
    Runtime       string                           `yaml:"runtime,omitempty"`
    Handlers      map[string][]map[string][]string `yaml:"handlers,omitempty"`
    Env_Variables map[string]string                `yaml:"env_variables,omitempty"`
}

func main() {
    s := `
runtime: go
handlers:
- url: /.*
  runtime: _go_app
  secure: always
env_variables:
  something: 'test'
`

    var a AppYAML
    if err = yaml.Unmarshal([]byte(s), &a); err != nil {
        log.Error(err)
        return
    }
}
Run Code Online (Sandbox Code Playgroud)

yaml go

3
推荐指数
1
解决办法
5935
查看次数

为什么各种git命令只在本地可用?

使用标准客户端再次运行远程存储库的命令数量非常有限.
大多数远程命令都是由提供的git-ls-remote.这只是git客户端的限制还是git服务器的限制?

我想编写一个客户端,它提供了大部分可以在本地运行的命令,也可以在远程存储库上运行.

一个很好的例子是获取日志(即git log)因此问题的原因.目前的做法是使用由托管git repostiory(github,gitlab,gerrit,bitbucket,stash等)的任何服务开发的专有API,因此我认为使用标准git协议开发的客户端将解决此问题.

git

3
推荐指数
1
解决办法
95
查看次数

是否可以覆盖标志值?

我想知道是否有可能在运行时覆盖标志值。

例:

  • main.go导入软件包pkg.go。
  • pkg.go使用标志(“ -myFlag”),但是不会导出存储该标志的标识符。

是否可以更改pkg.go从main.go接收的“ -myFlag”标志值?

用例:我正在使用使用glog记录错误的库。glog使用标志定义在何处写入日志,默认情况下,它将日志写入文件。我使用的环境不允许写入文件系统,也不允许在应用程序初始化时设置标志,因此我需要以某种方式覆盖/设置glog标志,以便可以将其设置为将错误写入stderr。

go

2
推荐指数
1
解决办法
698
查看次数