小编ebl*_*ood的帖子

一块结构与一段指向结构的指针

我不明白下面这段代码的行为.在创建一个匹配结构列表作为结构指针切片时,代码总是打印原始数组的最后一个元素(实际上不匹配) - 打印12和12.但是,如果我将匹配更改为[] Widget代替[]*Widget,然后它将打印10和11.

为什么是这样?

package main

import (
    "fmt"
)

func main() {

    type Widget struct {
        id    int
        attrs []string
    }

    widgets := []Widget{
        Widget{
            id:    10,
            attrs: []string{"blah", "foo"},
        },
        Widget{
            id:    11,
            attrs: []string{"foo", "bar"},
        },
        Widget{
            id:    12,
            attrs: []string{"xyz"},
        },
    }

    var matches []*Widget
    for _, w := range widgets {
        for _, a := range w.attrs {
            if a == "foo" {
                matches = append(matches, &w)
                break
            }
        }
    }

    for …
Run Code Online (Sandbox Code Playgroud)

go

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

无法从命令行生成 SHA512 HMAC

我正在尝试使用 openssl 命令行生成 SHA256 HMAC,但输出不正确。与维基百科的例子相比,我得到了一些不同的东西:

$ openssl dgst -sha256 -hmac "key" <<< "The quick brown fox jumps over the lazy dog"                                                                                                  
(stdin)= abb26bc1a42fb16503a4d5b44d5082ed8fe79229b3c057c6d770956777b83b15
Run Code Online (Sandbox Code Playgroud)

生成与维基百科示例相同结果的快速 PHP 示例:

print hash_hmac('sha256', 'The quick brown fox jumps over the lazy dog', 'key');
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 openssl 命令的各种选项,但无法弄清楚我做错了什么。

openssl

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

标签 统计

go ×1

openssl ×1