小编Nic*_*ick的帖子

将interface {}转换为int

我正在尝试从JSON获取一个值并将其转换为int但它不起作用,我不知道如何正确地执行它.

这是错误消息:

...cannot convert val (type interface {}) to type int: need type assertion
Run Code Online (Sandbox Code Playgroud)

和代码:

    var f interface{}
    err = json.Unmarshal([]byte(jsonStr), &f)
    if err != nil {
        utility.CreateErrorResponse(w, "Error: failed to parse JSON data.")
        return
    }

    m := f.(map[string]interface{})

    val, ok := m["area_id"]
    if !ok {
        utility.CreateErrorResponse(w, "Error: Area ID is missing from submitted data.")
        return
    }

    fmt.Fprintf(w, "Type = %v", val)   // <--- Type = float64
    iAreaId := int(val)                // <--- Error on this line.
    testName := "Area_" + …
Run Code Online (Sandbox Code Playgroud)

go

84
推荐指数
4
解决办法
12万
查看次数

如何禁用Golang未使用的导入错误

默认情况下,将未使用的导入视为错误,强制您删除导入.我想知道是否存在改变这种行为的希望.例如将其减少为警告.

我发现这个问题非常烦人,阻止我在Go中享受编码.例如,我正在测试一些代码,禁用段/功能.不再使用lib中的某些函数(例如fmt,errors等),但是我需要在稍微测试后重新启用该函数.现在程序将无法编译,除非我删除这些导入.几分钟后,我需要重新导入lib.

在开发GAE计划时,我一次又一次地做这个过程.

go

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

Go中的月份为int

情况:

当我打电话时一样的功能Second(),Year()等等,我得到塔伊的结果int.但是当我打电话时Month(),我会得到一个类型的结果Month.

我在在线文档中找到了以下内容:

type Month int
...
func (m Month) String() string
Run Code Online (Sandbox Code Playgroud)

..但我不太明白.

问题:

我的代码有如下错误,因为m没有int:

无效操作:( m / time.Month(10) + offset不匹配类型time.Month和int)

题:

如何获得intMonth()

go

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

在Go语言中,如何将json解组为对象数组?

我有以下JSON,我想将其解析为类数组:

{
    "1001": {"level":10, "monster-id": 1001, "skill-level": 1, "aimer-id": 301}
    "1002": {"level":12, "monster-id": 1002, "skill-level": 1, "aimer-id": 302}
    "1003": {"level":16, "monster-id": 1003, "skill-level": 2, "aimer-id": 303}
}
Run Code Online (Sandbox Code Playgroud)

这是我想要做的但失败了:

type Monster struct {
    MonsterId  int32
    Level      int32
    SkillLevel int32
    AimerId    int32
}


type MonsterCollection struct {
    Pool map[string]Monster
}

func (mc *MonsterCollection) FromJson(jsonStr string) {
    var data interface{}
    b := []byte(jsonStr)
    err := json.Unmarshal(b, &data)
    if err != nil {
        return
    }

    m := data.(map[string]interface{})

    i := 0
    for k, v …
Run Code Online (Sandbox Code Playgroud)

go

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

如何在GO语言中增加地图的分配大小?

我有一组对象,有时会添加新元素.

如何增加内部地图大小?

每次元素数超过分配数时,是否需要重新分配整个地图?

go

9
推荐指数
1
解决办法
6628
查看次数

如何在dynamodb中添加空或数据映射?

我有这样的事情:

{
  Records:{}
}
Run Code Online (Sandbox Code Playgroud)

我只是想在这样的记录中添加数据:

{
  Id: 123,
  Records:{
    10001: { event : "item1" }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试:

var params = {
    TableName : "Records",
    Key : { Id : 123 },
    UpdateExpression: 'set Record.#k1.event = :v1',
    ExpressionAttributeNames: { '#k1' :  10001},
    ExpressionAttributeValues: { ':v1' : 'item1' }
};
Run Code Online (Sandbox Code Playgroud)

因为Record.10001不存在,所以它给我错误:

The document path provided in the update expression is invalid for update
Run Code Online (Sandbox Code Playgroud)

"ADD"仅支持NUMBER和SET类型,因此它不适合我的情况.

我的第二次尝试(试图创建一张空地图第一次):

var params = {
    TableName : "Records",
    Key : { Id : 123 },
    UpdateExpression: 'set …
Run Code Online (Sandbox Code Playgroud)

amazon-dynamodb

9
推荐指数
1
解决办法
5982
查看次数

在 AWS Lambda 函数之间共享通用数据

如果我有一组通用配置,例如多个 Lambda 函数使用的一组常量。有什么方法可以在一个地方共享它们之间的数据,以便我可以轻松修改值,而无需在每个 lambda 函数内部进行一一更新?

我可以将数据放入数据库,但会导致每个 lambda 请求产生一个额外的查询,并且运行速度变慢。

amazon-web-services aws-lambda

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

使用GAE将对象保存到数据存储区.在获取它时,该对象具有空成员

我正在尝试用GAE学习Go.我创建了2个处理程序.一个用于将对象保存到数据存储区,另一个用于检索它并输出到屏幕.问题是,当我从数据存储区检索UserAccount对象时,对象内的每个值都消失了.

任何帮助将是欣赏.

输出:

a/c count: 2 val: core.UserAccount{idString:"", deviceId:""} val: core.UserAccount{idString:"", deviceId:""}

type UserAccount struct {
    idString string
    deviceId string
}

func create_account(w http.ResponseWriter, r *http.Request) {

    c := appengine.NewContext(r)

        idstr := "ABCDEFGH"
        devId := r.FormValue("deviceId")

        newAccount := UserAccount{ idString: idstr, deviceId: devId,}

        key := datastore.NewIncompleteKey(c, "UserAccount", nil)
        _, err := datastore.Put(c, key, &newAccount)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
    }

    fmt.Fprintf(w, "val: %#v \n", newAccount)
}

func get_info(w http.ResponseWriter, r *http.Request) {
    c := appengine.NewContext(r)

    q …
Run Code Online (Sandbox Code Playgroud)

go google-cloud-datastore

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

我正在从C到Go移植一个简单​​的RNG函数,给出不正确的结果

我正在将一个简单的RNG表格http://en.wikipedia.org/wiki/Multiply-with-carry移植到Golang但是,不知道哪个部分出错了,我的示例程序的结果是不一致的.

结果:

C = 58 1 78 15 57 28 96 73 47 12 61 47 74 86 91 93
GO= 58 8 18 48 90 72 18 84 54 52 94 80 18 8 2 0 
Run Code Online (Sandbox Code Playgroud)

而且我也不明白为什么t,在原始源中使用uint64而不是uint32.

下面是C main和Go counter部分:

去文件:http://play.golang.org/p/YVyIr1bcI8

原C:

#include <cstdlib>
#include <cstdio>

#include <stdint.h>

#define PHI 0x9e3779b9

static uint32_t Q[4096], c = 362436;

void init_rand(uint32_t x)
{
        int i;

        Q[0] = x;
        Q[1] = x + PHI;
        Q[2] = x …
Run Code Online (Sandbox Code Playgroud)

c go

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