小编Dat*_*sik的帖子

我应该多久在我的程序中调用 sql.Open ?

正如标题所说,我不知道有多条sql.Open语句是好事还是坏事,或者我是否应该有一个只有 init 的文件,例如:

var db *sql.DB


func init() {
    var err error
    db, err = sql.Open
}
Run Code Online (Sandbox Code Playgroud)

只是想知道最佳做法是什么。谢谢!

go

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

为什么包通过导出函数返回非导出函数来导出非导出函数

为什么有些包声明了两个相等的函数,唯一的区别是一个是导出的,另一个不是,但是导出的只是返回非导出的函数,如下所示:

func Foo() {
    return foo()
}

func foo() {
   log.Println("Hello")
}
Run Code Online (Sandbox Code Playgroud)

为什么不将日志移到导出的函数中并去掉多余的行?显然是有原因的,但如果你可以在任何地方使用导出的一个,我真的看不到一个。谢谢!

实施例在这里它在生产中使用

go

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

如何使用RethinkDB删除数组中的元素

我有一个表,其中包含Lobbys基本上只是派对房间,它有一个成员数组和一个消息数组,这是一个例子:

{
"id":  "a77be9ff-e10f-41c1-8a4c-66b5a55d823c" ,
"members": [
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt"
] ,
"messages": [ ]
}
Run Code Online (Sandbox Code Playgroud)

现在,当用户websocket连接到Lobby它时,它会将他们的用户名添加到Members列表中,而我正在尝试将其设置为当用户离开Party时将其从成员列表中删除,我想出了这个:

r.db("gofinder").table("Lobbys").get("a77be9ff-e10f-41c1-8a4c-66b5a55d823c")("members").update({
  members: r.db("gofinder").table("Lobbys").get("a77be9ff-e10f-41c1-8a4c-66b5a55d823c")("members").ne("Gacnt")
})
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

e: Could not prove argument deterministic.  Maybe you want to …
Run Code Online (Sandbox Code Playgroud)

go rethinkdb

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

flag和0xffffffff在这个例子中做了什么

尝试将C程序转换为Javascript,因为我找到了旧的源代码.唯一的问题是我在学习C的过程中,但是对于语言的新鲜感最难的是你并不确切知道google的哪些术语.无论如何,

我有这段代码:

unsigned long long flag=0;

if (class[1]=='W') flag|=CF_WARRIOR;
else flag|=CF_MAGE;
Run Code Online (Sandbox Code Playgroud)

在头文件中,它说

#define CF_WARRIOR (1ull<<16)
Run Code Online (Sandbox Code Playgroud)

然后它的最后一部分是:

(unsigned int)(flag&0xffffffff) // Assuming some sort of type casting followed by a bitwise &?
Run Code Online (Sandbox Code Playgroud)

只是不确定程序员当时想要完成什么.

抱歉这个可怜的问题,但我不知道谷歌要把这个问题弄清楚,我理解的1ull是1个无符号多长并且<< 16是一个按位移位.但不确定|=是做什么或做什么的flag&0xffffffff.谢谢.

c

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

应用程序启动后是否可以重新加载html模板?

现在我正在将所有模板解析为变量,如下所示:

var templates = template.New("Template")

func LoadTemplates() {
    filepath.Walk("view/", func(path string, info os.FileInfo, err error) error {
        if strings.HasSuffix(path, ".html") {
            templates.ParseFiles(path)
        }
        return nil
    })
}

func Render(w http.ResponseWriter, tmplName string, data interface{}) {
    if err := templates.ExecuteTemplate(w, tmplName, data); err != nil {
        log.Println(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我进行任何更改,我需要重新启动整个应用程序.我有什么方法可以做到这一点,以便在制作时反映出变化

go

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

如何将自定义类型转换为字符串?

我正在使用一个包而不是返回一个string,它返回一个economy.ClassId你可以看到这里

我想将economy.ClassId一个像"531569319"这样的数字串传递给一个字符串不是一个字母的函数economy.ClassId是否有办法将这种类型转换为字符串或不.谢谢.

我知道你可以喜欢strconv.FormatUint()但我会用于自定义类型.

go

3
推荐指数
2
解决办法
4172
查看次数

为什么这个循环被认为是数据竞争[Golang]

我有一个循环,我得到这个错误,我正在运行 go run -race main.go

这是有问题的循环:

var wg sync.WaitGroup

for _, member := range p.Members { << Line 254
    go func() {
        wg.Add(1)
        _, err := db.Exec("UPDATE party_members SET active = ? WHERE steamid = ?", false, member.SteamID) << Line 257
        if err != nil {
            log.Println(err)
        }
        _, err = db.Exec("INSERT INTO party_members SET belongs_to =?, active = ?, steamid = ?", partyUUID, true, member.SteamID)
        if err != nil {
            log.Println(err)
        }
        wg.Done()
    }() << Line 266
}
Run Code Online (Sandbox Code Playgroud)

然后这是我得到的错误: …

go

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

在这种情况下 (nil) 到底在做什么 []string(nil)

我在看切片技巧:https : //github.com/golang/go/wiki/SliceTricks

我在他们的复制示例中注意到他们有 []T(nil)

我以前从未见过(nil)这样的东西,我找不到任何关于使用它的文档或它究竟完成了什么(我知道它是不言自明的,但我想知道它如何与make[]string{}

我可以通过谷歌搜索“golang (nil) slice”找到的唯一参考是

由于切片 (nil) 的零值就像一个零长度切片,您可以声明一个切片变量,然后在循环中附加到它:

但它没有说明它可以在哪里使用或它完成了什么,比如我可以将它与结构或任何我想要的一起使用吗?

例如:

包主

导入“日志”

func main() {
    str := []string{"Hello", "Bye", "Good Day", "????????"}
    cop := append([]string(nil), str...)    

    log.Println(str)
    log.Println(cop)
}
Run Code Online (Sandbox Code Playgroud)

我只是对如何(nil)运作以及它可以运作的内容感到好奇。

喜欢

[]string(nil)
Run Code Online (Sandbox Code Playgroud)

操作一样

[]string{}
Run Code Online (Sandbox Code Playgroud)

或者这里有什么区别

go

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

从moment.js 获取无效日期?

当我得到它时,我有一个 redis 存储的时间戳,它看起来像这样:

1454803149444

然后当我尝试做:

i.text-muted.createdAtPost= moment(post.timestamp).format("MM/DD/YY @ h:mm:ss") // Jade Template
Run Code Online (Sandbox Code Playgroud)

我得到

Invalid Date

但是如果我取相同的整数,然后去moment(1454803149444).format(h:mm:ss")我得到05/21/54 @ 12:00:00

任何信息都会非常感谢。

在此处输入图片说明 在此处输入图片说明

momentjs

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

左移0点是什么意思?

我目前正在尝试为开源服务器实现谷歌身份验证器,他们有这么少的代码

  if (securityFlags & 0x01)               // PIN input
                {
                    pkt << uint32(0);
                    pkt << uint64(0) << uint64(0);      // 16 bytes hash?
                    // This triggers the 2 factor authenticator entry to popup on the client side

                }

                if (securityFlags & 0x02)               // Matrix input
                {
                    pkt << uint8(0);
                    pkt << uint8(0);
                    pkt << uint8(0);
                    pkt << uint8(0);
                    pkt << uint64(0);
                }

                if (securityFlags & 0x04)               // Security token input
                {
                    pkt << uint8(1);
                }
Run Code Online (Sandbox Code Playgroud)

我只想弄清楚他们使用的原因pkt << uint32(0),因为它们对我来说似乎完全是多余的.而且他们也经常使用它,这使得它更没意义.

为什么他们的代码是这样编写的?

c++

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

标签 统计

go ×7

c ×1

c++ ×1

momentjs ×1

rethinkdb ×1