小编icz*_*cza的帖子

Golang:如何在没有cgo的情况下调用win32 API?

我试图调用GetUserNameExsecur32.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.谁能帮助我?

windows dll winapi go

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

Golang从文件中嵌入了html

如果我有这样的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)

templates go go-templates

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

如果我正确使用频道,我是否需要使用互斥锁?

如果我正确使用频道,我是否需要使用互斥锁来防止并发访问?

concurrency mutex channel go

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

在Go中将struct字段的初始值设置为另一个的初始值

在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中实现这一点,以便我不必初始化两个字段?

struct initialization go

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

结构化for循环初始化程序

知道为什么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)

struct go composite-literals

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

gometalinter/errcheck在延迟返回变量的func时返回警告

gometalintererrcheck返回一个关于延迟返回变量的函数的警告.

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)

return-value go deferred-execution

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

迭代 Go 地图获取索引

为了在模板中使用revel'seven关键字,我想在使用range. 有什么办法吗?我的地图具有以下结构:

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

dictionary go go-templates revel

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

struct {}和struct {} {}如何在Go中工作?

我想知道Go中的"struct {}"和"struct {} {}"是什么意思?一个例子如下:

array[index] = struct{}{}
Run Code Online (Sandbox Code Playgroud)

要么

make(map[type]struct{})
Run Code Online (Sandbox Code Playgroud)

syntax struct go

6
推荐指数
2
解决办法
2945
查看次数

没有复制最小的例子?

我一直在尝试获取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

struct mutex go

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

如何使用官方 mongo-go-driver 从 mongo 文档中过滤字段

如何使用 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”。但文件没有改变。

struct projection go mongodb mongo-go

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