小编kos*_*tix的帖子

Chdir和Setuid和Setgid线程是否安全?

os. Chdir,os.Setuidos.Setgid线程安全的进去吗?

换句话说,如果我os.Chdir在两个不同的并行运行的goroutine中执行(或其他两个函数),它是否会更改工作goroutine或整个过程的目录(这可能会导致问题)?

我在文档中找不到任何信息.

multithreading go

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

来自Go的不区分大小写的MongoDB查询

我有这个json文件:

[{
    "name": "chetan",
    "age": 23,
    "hobby": ["cricket", "football"]
}, {
    "name": "raj",
    "age": 24,
    "hobby": ["cricket", "golf"]
}]
Run Code Online (Sandbox Code Playgroud)

我用这个Go代码搜索数据:

id := "ket" 
regex := bson.M{"$regex": bson.RegEx{Pattern: id}} 
err = c.Find(bson.M{"hobby": regex}).All(&result)
Run Code Online (Sandbox Code Playgroud)

它发现如果用"cricket"这样的字符串搜索,但是如果我搜索像"Cricket"这样的字符串,它就找不到它.

go mgo

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

npm ENOSELF 错误 - 在其 gh-pages 分支中安装软件包

我想使用 Lib 本身为 GitHub 上的 JS Lib 编写一些文档。我创建了一个名为的空分支gh-pages并开始构建文档页面。现在我需要使用我正在记录的 Lib 编写一些 Javascript,因为谁不会使用他们自己的库。我尝试通过安装它,npm install但显然出现了这个错误:

npm ERR! code ENOSELF
npm ERR! Refusing to install package with name "package" under a package
npm ERR! also called "package". Did you name your project the same
npm ERR! as the dependency you're installing?
npm ERR!
npm ERR! For more information, see:
npm ERR!     <https://docs.npmjs.com/cli/install#limitations-of-npms-install-algorithm>
Run Code Online (Sandbox Code Playgroud)

那么如何gh-pages从主分支复制的情况下将代码库放入我的-branch 中呢?我不想在两个不同的分支中维护相同的代码库。

conventions npm github-pages

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

Vue Material postinstall失败

所以我现在已经在Vue.js项目上工作了几次,我遇到了一个我以前从未见过的问题.

试图将项目拉到另一台计算机上,甚至将项目作为zip文件下载,到时候npm install,vue-material模块失败并且无法运行整个项目.

它是这样的,用vie-material:

vue-material@1.0.0 postinstall C:\<my_things>\node_modules\vue-material sh build/git-hooks/install.sh

然后我看到了这个:

/usr/bin/bash: build/git-hooks/install.sh: No such file or directory

然后模块的树显示在终端中,最后,我可以看到与vue-material相关的所有错误,并带有以下声明:

Tell the author that this fails on your system: sh build/git-hooks/install.sh

顺便说一句,我试图创建一个全新的Vue项目,并尝试在内部添加vue-material,没问题,所以它与我的项目有关.

显然,/usr/bin/bash不存在,因为我正在运行Windows 10.

有关npm安装程序的任何知识吗?我没有办法解决...

npm vue.js vue-material

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

是否可以在运行时删除struct值的字段?

我有以下结构:

type Record struct {
  Id     string   `json:"id"`
  ApiKey string   `json:"apiKey"`
  Body   []string `json:"body"`
  Type   string   `json:"type"`
}
Run Code Online (Sandbox Code Playgroud)

这是dynamoDB表的蓝图.我需要以某种方式删除ApiKey,用于检查用户是否有权访问给定记录.解释:

我在我的API中有端点,用户可以发送一个id来获取项目,但他需要访问ID和ApiKey(我使用Id(uuid)+ ApiKey)来创建唯一的项目.

我是怎么做的:

 func getExtraction(id string, apiKey string) (Record, error) {
    svc := dynamodb.New(cfg)

    req := svc.GetItemRequest(&dynamodb.GetItemInput{
      TableName: aws.String(awsEnv.Dynamo_Table),
      Key: map[string]dynamodb.AttributeValue{
        "id": {
          S: aws.String(id),
        },
      },
    })

    result, err := req.Send()
    if err != nil {
      return Record{}, err
    }

    record := Record{}
    err = dynamodbattribute.UnmarshalMap(result.Item, &record)
    if err != nil {
      return Record{}, err
    }

    if record.ApiKey …
Run Code Online (Sandbox Code Playgroud)

struct go

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

使用fmt.Printf打印URL的行为非常奇怪

如果我将数据库中的URL保存为

https://xxx.amazonaws.com/sub%2Fsub1/1495771021869-3sx5ims88vu-12f63aaa7d278435e1800486b31f9cc7/xxx.jpg

http.ResponseWriter以下列格式返回

https://xxx.amazonaws.com/sub!F(MISSING)sub1/1495771021869-3sx5ims88vu-12f63aaa7d278435e1800486b31f9cc7/xxx.jpg

在上面的网址中你可以看到%2F被替换为!F(MISSING)

有人可以帮助解决这个问题

以下是代码片段``rs.WriteHeader(retObj.HttpStatus)

jsonStr, res := ConvObjectToJSON(retObj)
if res != nil {
    Logger(ctx, cnst.LogError, "In writeReturnError error in ConvObjectToJSON: %v Original object:%v",
        res.GetMessageWDetails(), retObj)
    rs.WriteHeader(http.StatusInternalServerError)
    return
}

var consoleLog *log.Logger = log.New(os.Stdout, cnst.LogPrefix, log.Ldate|log.Ltime)
consoleLog.Print(jsonStr)

cnt, err := fmt.Fprintf(rs, jsonStr)
if nil == err && 0 < cnt {
    rs.Header().Set("Content-Type", "application/json")
} else {
    Logger(ctx, cnst.LogError, "In writeReturnError error in fmt.Fprintf: %v Original JSON:%v",
        err.Error(), jsonStr)
    rs.WriteHeader(http.StatusInternalServerError)
}
Run Code Online (Sandbox Code Playgroud)

``

我对fmt.Fprintf有疑问

url go

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

如何在Go中实现宏?

我用C++完成项目,我用#define宏来给出项目的名称,我在几个地方使用过,我不经常更改这个名称,但有时我可能需要更改它,然后我更改此宏并重建我的代码.现在我将此代码转换为Go.有人可以建议我如何在Go中实现这个?我对使用全局变量没有兴趣,因为我有很多这样的宏,我怀疑这会导致我的项目占用更多的CPU并影响性能.

macros go

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

短变量声明和"变量声明和未使用"错误

我遇到了一个奇怪的问题,下面的代码无法编译:

func main() {
    var val reflect.Value
    var tm time.Time

    if tm, err := time.Parse(time.RFC3339, "2018-09-11T17:50:54.247Z"); err != nil {
        panic(err)
    }
    val = reflect.ValueOf(tm)

    fmt.Println(val, tm, reflect.TypeOf(tm))
}
Run Code Online (Sandbox Code Playgroud)

有错误(代码是linter推荐的):

$ go run main.go
# command-line-arguments
./main.go:13:5: tm declared and not used
Run Code Online (Sandbox Code Playgroud)

注意tm确实使用了变量.

但是,如果我添加一个else块 - 一切都按预期编译:

func main() {
    var val reflect.Value
    var tm time.Time

    if tm, err := time.Parse(time.RFC3339, "2018-09-11T17:50:54.247Z"); err != nil {
        panic(err)
    } else {
        val = reflect.ValueOf(tm)
    }

    fmt.Println(val, tm, reflect.TypeOf(tm))
}
Run Code Online (Sandbox Code Playgroud)

这看起来像编译器中的错误或者可能是已知问题?任何的想法?(我用的是1.11) …

go

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

为什么map [time.Time]字符串有时不起作用?

这是一个示例,表示map [time.Time]字符串"不起作用".

package main

import (
    "fmt"
    "time"
)

type MyDate time.Time

func NewMyDate(year, month, day int, tz time.Location) (MyDate, error) {
    return MyDate(time.Date(year, time.Month(month), day, 0, 0, 0, 0, &tz)), nil
}

func (md MyDate)ToTime() time.Time {
    return time.Time(md)
}

func main()  {
    timeMap := make(map[time.Time]string)

    md1, _ := NewMyDate(2019, 1, 1, *time.UTC)
    md2, _ := NewMyDate(2019, 1, 1, *time.UTC)

    timeMap[md1.ToTime()] = "1"
    timeMap[md2.ToTime()] = "2"

    for k, v := range timeMap {
        fmt.Println(k, v)
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

2019-01-01 …

datetime associative-array go

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

swag :术语“swag”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称

我的问题是,当我尝试运行时,swag init我看到以下内容

swag : The term 'swag' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ swag init
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (swag:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)

我尝试了 stackoverflow 上的所有指南,但没有任何帮助以你能想象到的方式改变我的环境变量,没有任何帮助。

我的 GOPATH 设置为 %USERPROFILE%\go,这是我从官方网站安装 go 的文件夹。我的 Path 变量有 %USERPROFILE%\go\bin。

当我尝试go generate为 …

powershell command-line swagger

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