相关疑难解决方法(0)

golang结构定义中反引号的用法是什么?

type NetworkInterface struct {
    Gateway              string `json:"gateway"`
    IPAddress            string `json:"ip"`
    IPPrefixLen          int    `json:"ip_prefix_len"`
    MacAddress           string `json:"mac"`
    ...
}
Run Code Online (Sandbox Code Playgroud)

我很困惑什么是反引号内容的功能,比如json:"gateway".

这只是评论//this is the gateway吗?

go

105
推荐指数
2
解决办法
4万
查看次数

Golang中的奇怪类型定义语法(名称,然后是类型,然后是字符串文字)

我一直试图找出如何使用mgo(Go的MongoDB驱动程序),我遇到了这个结构声明:

type Something struct {
    Id bson.ObjectId "_id,omitempty"
    Name string
}
Run Code Online (Sandbox Code Playgroud)

我不太了解第一个元素(Id)的语法.我知道它被声明为类型bson.ObjectId,但字符串文字在那里做什么?

我的问题不是关于mgo驱动程序的功能,
而是关于这种奇怪的<name> <type> <string_literal>语法.

我在Go规格上找不到任何东西,我也不知道如何谷歌这个.

go

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

json:无法将对象解组为Go类型的值

我无法解码下面的json代码...任何想法为什么它不起作用?另见play.golang

    package main

    import (
        "encoding/json"

    )

    type LocationReadable struct {
        District string
        City     string
        State    string
    }

    type Locale struct {
        Location         string
        CountryCode      string
        CurrencyId       string
        CurrencySymbol   string
        LocationReadable LocationReadable
    }

    type Media struct {
        Image string
        Video string
    }

    type Variations struct {
        FixedPrice float64
        Media      Media
        Quantity   int
    }

    type PaymentData struct {
        PaymentName    string
        PaymentService string
    }

    type Payment struct {
        Online  PaymentData
        Offline PaymentData
    }

    type Shipping struct {
        ShippingService        string
        ShippingName           string …
Run Code Online (Sandbox Code Playgroud)

json go

20
推荐指数
3
解决办法
8万
查看次数

如何在golang中获取结构的json字段名称?

获取此结构的json字段名称的方法是什么?

type example struct {
    Id          int `json:"id"`
    CreatedAt   string `json:"created_at"`
    Tag         string `json:"tag"`
    Text        string `json:"text"`
    AuthorId    int `json:"author_id"`
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用此功能打印字段:

func (b example) PrintFields() {
    val := reflect.ValueOf(b)
    for i := 0; i < val.Type().NumField(); i++ {
        fmt.Println(val.Type().Field(i).Name)
    }
}
Run Code Online (Sandbox Code Playgroud)

我当然得到:

Id
CreatedAt
Tag
Text
AuthorId
Run Code Online (Sandbox Code Playgroud)

但我想要的是:

id
created_at
tag
text
author_id
Run Code Online (Sandbox Code Playgroud)

json struct field go

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

在函数名称之前使用下划线来转换struct标记

我正在使用go,特别是QT绑定.但是我不明白在下面的结构中使用前导下划线.我知道一般使用下划线但不是这个具体的例子.

type CustomLabel struct {
    core.QObject

    _ func() `constructor:"init"`
    _ string `property:"text"`
}
Run Code Online (Sandbox Code Playgroud)

它与struct标签有关吗?

struct naming-conventions go

12
推荐指数
2
解决办法
674
查看次数

通过mgo查找id

我想通过找到一个数据_id.我知道这个数据存在并_id存在(我用pymongo测试过).

但是下面的代码找不到它:

type id_cookie struct {
    IdCookie int
}

func get_id_mongo() int {
    session, err := mgo.Dial("127.0.0.1")
    if err != nil {
        panic(err)
    }
    defer session.Close()

    // Optional. Switch the session to a monotonic behavior.
    session.SetMode(mgo.Monotonic, true)

    c := session.DB("id_bag").C("id_cookie")
    data := id_cookie{}
    err2 := c.FindId(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).One(&data)
    if (err2 != nil){
        Info.Println("error")
        Info.Println(err2)
    }
    Info.Println(data)
    return data.IdCookie
}
Run Code Online (Sandbox Code Playgroud)

它只是给我一个回报0.

但我可以使用pytmongo和python找到它.

import requests
import pymongo 
from pymongo import MongoClient
from bson.objectid import ObjectId
from pprint …
Run Code Online (Sandbox Code Playgroud)

go mongodb mgo

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

理解Go中Kubernetes API框架的逻辑

我目前正试图围绕学习Go,我之前没有使用的kubernetes API的一些细节和Go的kubernetes api框架,并且非常感谢你帮助理解该框架的语法和为什么人们仍然使用它.

老实说,如果它包含与REST端点相同的信息,我不确定为什么首先使用框架.仅通过http库直接调用API会不会更有意义?

这是一个例子(取自一些真实的代码):

pod, err := kubecli.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{})
Run Code Online (Sandbox Code Playgroud)

我觉得麻烦的是,我必须在API文档中查找所有内容,然后我还需要弄清楚/v1/转换为CoreV1().而且我甚至不确定我能在哪里看到它.整个块metav1.GetOptions{}似乎完全没必要,或者HTTP请求的哪一部分由它表示?

我希望我能弄清楚这种混乱是什么,并希望你帮助清理它.

编辑:

这里也是一个例子,它是从新的运算符框架生成的,遗憾的是它并没有让它变得更好:

 return &v1.Pod{
    TypeMeta: metav1.TypeMeta{
            Kind:       "Pod",
            APIVersion: "v1",
    },
    ObjectMeta: metav1.ObjectMeta{
            Name:      "busy-box",
            Namespace: cr.Namespace,
            OwnerReferences: []metav1.OwnerReference{
                    *metav1.NewControllerRef(cr, schema.GroupVersionKind{
                            Group:   v1alpha1.SchemeGroupVersion.Group,
                            Version: v1alpha1.SchemeGroupVersion.Version,
                            Kind:    "Memcached",
                    }),
            },
            Labels: labels,
    },
    Spec: v1.PodSpec{
            Containers: []v1.Container{
                    {
                            Name:    "busybox",
                            Image:   "busybox",
                            Command: []string{"sleep", "3600"},
                    },
            },
    },
 }
Run Code Online (Sandbox Code Playgroud)

API文档不知道这事TypeMeta的对象.并且第二个元素被调用ObjectMeta:而不是metadata …

api rest go kubernetes

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

数据存储:Put上的实体类型无效

我正在尝试创建一个围绕我的种类的包装器,这是我如何做到这一点:

package model

import (
    "time"
)

type Kind interface {
    Name() string
}

type Message struct {
    Text      string
    CreatedOn time.Time
    UserId    string
}

func (q Message) Name() string {
    return "MESSAGE"
}
Run Code Online (Sandbox Code Playgroud)

我介绍的原因type Kind interface是:

// Stores the given model for the the kind in data store
func Store(req *http.Request, data Kind) error {
    ctx := appengine.NewContext(req)
    key := datastore.NewKey(ctx, data.Name(), "", 0, nil)
    _, err := datastore.Put(ctx, key, &data)
    return err
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在使用data.Name()各种名称. …

google-app-engine go google-cloud-datastore

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

go mongodb 驱动程序和结构体,发现大写和小写混乱

var Messages []Token
c2 := session.DB("mydatabase").C("pages")
query2 := c2.Find(bson.M{}).All(&Messages)
fmt.Print(Messages)
Run Code Online (Sandbox Code Playgroud)

这是我的 Mongo DB 中的结构:

id_
pageUrl
token
pageId
Run Code Online (Sandbox Code Playgroud)

我首先尝试了这样的结构:

type Token struct {
    PageUrl string
    Token string
    PageId string
}
Run Code Online (Sandbox Code Playgroud)

但只打印了令牌,可能是因为它都是小写的。未检索其他两个字段,因为它们包含大写字母。然后我尝试了这个:

type Token struct {
    PageUrl string `json: "pageUrl" bson: "pageUrl"`
    Token string `json: "token" bson: "token"`
    PageId string `json: "pageId" bson: "pageId"`
}    
Run Code Online (Sandbox Code Playgroud)

bson那些是什么json?我只是把它放在那里,因为我在互联网上看到过,但它不起作用,我仍然只得到该token字段

更新嵌套文档的解决方案和测试示例

我看到没有关于这个问题的帖子,所以请记住,解决方案是删除json:和之间的空格bson: 另外,为了帮助那些可能想知道如何对嵌套结构执行此操作的人,这里我给出了两个对我有用的结构:

type Token struct {
    PageUrl string `json:"pageUrl" bson:"pageUrl"`
    Token string `json:"token" bson:"token"`
    PageId string …
Run Code Online (Sandbox Code Playgroud)

database go mongodb

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

Golang 通过 JSON 标签获取结构体的字段名称

我有一个结构:

type Human struct {
    Head  string  `json:"a1"`
    Body  string  `json:"a2"`
    Leg   string  `json:"a3"`
}
Run Code Online (Sandbox Code Playgroud)

如何通过提供 JSON 标记名称来获取结构的字段名称?大概是这样的:

fmt.Println(getFieldName("a1")) // "Head"
fmt.Println(getFieldName("a2")) // "Body"
fmt.Println(getFieldName("a99")) // ""

func getFieldName(tag string) (fieldname string) {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我应该如何实现该getFieldName功能?我在网上看了,好像需要用到这个reflect包,嗯……有帮手吗?:)

go

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