我试图调用GetUserNameEx从secur32.dll这样的:
dll, err := syscall.LoadDLL("secur32.dll")
if err != nil {
log.Fatal(err)
}
defer dll.Release()
GetUserNameEx, err := dll.FindProc("GetUserNameExW")
if err != nil {
log.Fatal(err)
}
arr := make([]uint8, 256)
var size uint
GetUserNameEx.Call(3, uintptr(unsafe.Pointer(&arr[0])), uintptr(unsafe.Pointer(&size)))
fmt.Println(arr)
fmt.Println(size)
Run Code Online (Sandbox Code Playgroud)
这段代码编译得很好,但GetUserNameEx.Call()会失败.我不知道为什么我不能得到UserName.谁能帮助我?
如果我有这样的HTML文件,我怎么能在Golang中做:
<html>
<head lang="en">
</head>
<body>
<header>{{.Header}}</header>
<div class="panel panel-default">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想将一部分代码嵌入到其他文件的头文件标签中,如下所示:
<div id="logo"></div><div id="motto"></div>
Run Code Online (Sandbox Code Playgroud)
我的尝试:
header, _ := template.ParseFiles("header.html")
c := Content{Header: ""}
header.Execute(c.Header, nil)
index := template.Must(template.ParseFiles("index.html"))
index.Execute(w, c)
Run Code Online (Sandbox Code Playgroud) 如果我正确使用频道,我是否需要使用互斥锁来防止并发访问?
在Go中,假设我有这个结构:
type Job struct {
totalTime int
timeToCompletion int
}
Run Code Online (Sandbox Code Playgroud)
我初始化一个结构对象,如:
j := Job {totalTime : 10, timeToCompletion : 10}
Run Code Online (Sandbox Code Playgroud)
其中约束timeToCompletion总是等于totalTime创建结构时(它们可以稍后更改).有没有办法在Go中实现这一点,以便我不必初始化两个字段?
知道为什么for循环初始化程序中的这个结构表达式在编译时会出现语法错误吗?在这种情况下,指向struct的指针工作正常但是我需要像bellow这样的局部变量.谢谢你的建议!
type Request struct {
id int
line []byte
err error
}
go func() {
for r := Request{}; r.err == nil; r.id++ {
r.line, r.err = input.ReadSlice(0x0a)
channel <- r
}
}()
Run Code Online (Sandbox Code Playgroud) gometalinter并errcheck返回一个关于延迟返回变量的函数的警告.
Web请求中的示例:
defer r.Body.Close()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Close返回一个错误变量并且不会检查它.
将其推迟到另一个函数中是最好的方法/惯用法吗?
defer func() {
err := r.Body.Close()
if err != nil {
// fmt, panic or whatever
}
}()
Run Code Online (Sandbox Code Playgroud) 为了在模板中使用revel'seven关键字,我想在使用range. 有什么办法吗?我的地图具有以下结构:
map[string][]string
Run Code Online (Sandbox Code Playgroud) 我想知道Go中的"struct {}"和"struct {} {}"是什么意思?一个例子如下:
array[index] = struct{}{}
Run Code Online (Sandbox Code Playgroud)
要么
make(map[type]struct{})
Run Code Online (Sandbox Code Playgroud) 我一直在尝试获取noCopy适用于我自己的结构之一的指令,但我无法go vet检测到它。
我可以让它检测sync.WaitGroup, 和 的复制sync.Mutex,但不能检测我自己的结构。兽医源中的这个测试文件甚至不会用我的go vet.
或者,它发现了一些错误:
# command-line-arguments
./govet.go:56:6: no new variables on left side of :=
./govet.go:110:17: unsafe.Sizeof(mu) evaluated but not used
./govet.go:111:18: unsafe.Sizeof(mu) evaluated but not used
./govet.go:112:10: unsafe.Sizeof(mu) evaluated but not used
Run Code Online (Sandbox Code Playgroud)
但复制锁检测没有发现任何东西。
go vet自从1.4版本的讨论以来,有什么变化吗?我在跑go version go1.11 darwin/amd64。
如何使用 mongo-go-driver 过滤字段。用 findopt.Projection 试过了,但没有成功。
type fields struct {
_id int16
}
s := bson.NewDocument()
filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId))
var opts []findopt.One
opts = append(opts, findopt.Projection(fields{
_id: 0,
}))
staCon.collection.FindOne(nil, filter, opts...).Decode(s)
Run Code Online (Sandbox Code Playgroud)
最后,我想取消字段“_id”。但文件没有改变。
go ×10
struct ×5
go-templates ×2
mutex ×2
channel ×1
concurrency ×1
dictionary ×1
dll ×1
mongo-go ×1
mongodb ×1
projection ×1
return-value ×1
revel ×1
syntax ×1
templates ×1
winapi ×1
windows ×1