正如标题所说,我不知道有多条sql.Open语句是好事还是坏事,或者我是否应该有一个只有 init 的文件,例如:
var db *sql.DB
func init() {
var err error
db, err = sql.Open
}
Run Code Online (Sandbox Code Playgroud)
只是想知道最佳做法是什么。谢谢!
为什么有些包声明了两个相等的函数,唯一的区别是一个是导出的,另一个不是,但是导出的只是返回非导出的函数,如下所示:
func Foo() {
return foo()
}
func foo() {
log.Println("Hello")
}
Run Code Online (Sandbox Code Playgroud)
为什么不将日志移到导出的函数中并去掉多余的行?显然是有原因的,但如果你可以在任何地方使用导出的一个,我真的看不到一个。谢谢!
实施例在这里它在生产中使用
我有一个表,其中包含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) 尝试将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.谢谢.
现在我正在将所有模板解析为变量,如下所示:
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)
因此,如果我进行任何更改,我需要重新启动整个应用程序.我有什么方法可以做到这一点,以便在制作时反映出变化
我正在使用一个包而不是返回一个string,它返回一个economy.ClassId你可以看到这里
我想将economy.ClassId一个像"531569319"这样的数字串传递给一个字符串不是一个字母的函数economy.ClassId是否有办法将这种类型转换为字符串或不.谢谢.
我知道你可以喜欢strconv.FormatUint()但我会用于自定义类型.
我有一个循环,我得到这个错误,我正在运行 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)
然后这是我得到的错误: …
我在看切片技巧: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)
或者这里有什么区别
当我得到它时,我有一个 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
任何信息都会非常感谢。
我目前正在尝试为开源服务器实现谷歌身份验证器,他们有这么少的代码
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),因为它们对我来说似乎完全是多余的.而且他们也经常使用它,这使得它更没意义.
为什么他们的代码是这样编写的?