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吗?
我一直试图找出如何使用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规格上找不到任何东西,我也不知道如何谷歌这个.
我无法解码下面的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字段名称的方法是什么?
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) 我正在使用go,特别是QT绑定.但是我不明白在下面的结构中使用前导下划线.我知道一般使用下划线但不是这个具体的例子.
type CustomLabel struct {
core.QObject
_ func() `constructor:"init"`
_ string `property:"text"`
}
Run Code Online (Sandbox Code Playgroud)
它与struct标签有关吗?
我想通过找到一个数据_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,我之前没有使用的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 …
我正在尝试创建一个围绕我的种类的包装器,这是我如何做到这一点:
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()各种名称. …
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) 我有一个结构:
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包,嗯……有帮手吗?:)