小编Jim*_*imB的帖子

如何读取struct字段``decorators?

我的包需要能够让我的用户明确地定义字段后端数据库列名,如果他们愿意的话.

默认情况下,我将使用字段名称 - 但有时他们需要手动指定列名称,就像JSON包一样 - unmarshal在需要时使用显式名称.

如何在代码中使用此显式值?我甚至不知道它叫什么,所以Google现在真的让我失望了.

以下是JSON的unmarshal函数需要的例子:

type User struct {
    Name string
    LastName    string  `json:"last_name"`
    CategoryId  int     `json:"category_id"`
}
Run Code Online (Sandbox Code Playgroud)

我需要使用这样的东西?

// Paprika is my package name.
type User struct {
    Name string
    LastName    string   `paprika:"last_name"`
    CategoryId  int      `paprika:"category_id"`
}
Run Code Online (Sandbox Code Playgroud)

我的包将构建SQL查询,我不能只依赖于字段的名称 - 我需要能够让它们手动设置列名.因此,目前仅使用已定义的列.

// Extracts resource information using reflection and
// saves field names and types.
func loadTypeToSchema(resource interface{}) {
    resourceType := reflect.TypeOf(resource)

    // Grab the resource struct Name.
    fullName := resourceType.String()
    name := fullName[strings.Index(fullName, ".")+1:]

    // Grabs the …
Run Code Online (Sandbox Code Playgroud)

json struct go unmarshalling

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

高朗的CRON工作

我在CRON PKG中使用 https://github.com/jasonlvhit/gocron/blob/master/gocron.go

import (
    "fmt"
    "time"

    "github.com/claudiu/gocron"
)

func task() {
    fmt.Println("I am runnning task.", time.Now())
}
func vijay() {
    fmt.Println("I am runnning vijay.", time.Now())
}

func main() {
    go test()

    gocron.Start()
    s := gocron.NewScheduler()
    gocron.Every(5).Seconds().Do(task)
    gocron.Every(10).Seconds().Do(vijay)

    <-s.Start()

}
func test() {
    time.Sleep(20 * time.Second)
    gocron.Clear()
    fmt.Println("All task removed")
}
Run Code Online (Sandbox Code Playgroud)

我的问题是删除所有工作后,我的程序仍在执行

我想在删除所有工作后中断执行

请帮帮我,我无法找到方法,我也尝试更改了PKG源代码,但无法找到方法

谢谢你们

go

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

将参数传递给 Go IIFE(遵循 javascript 示例)

我习惯于在 javascript 中编程,我可以执行以下操作将参数传递给立即调用的函数表达式:

(function(twoSeconds) {
    // do something with "twoSeconds" here
})(2 * 1000);
Run Code Online (Sandbox Code Playgroud)

所以我希望能够在 Go 中做类似的事情,如下所示。但是,它似乎不起作用。

func (twoSeconds) {
    // build error: "twoSeconds" undefined
}(time.Second * 2)
Run Code Online (Sandbox Code Playgroud)

所以我必须这样做:

func () {
    twoSeconds := time.Second * 2
}()
Run Code Online (Sandbox Code Playgroud)

因此,我的问题是如何将参数传递给 Go IIFE?如果不可能,为什么不呢?

javascript go iife

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

Go HTTP 表单解析 - 返回空切片/空值?

我用 Go 编写了一个简单的 Web 应用程序,需要读取 HTTP 表单的值(用户名、密码)等。但是,我发现打印时这些值是空的。len(r.Form)并且len(r.Form["password"])都返回 0。

r.ParseForm()在尝试读取字段之前我已经调用了应用程序,并且我正在使用 Postman 发送请求。在 Linux 和 macOS 上进行了测试。

我用来测试的代码是 Astaxie golang Web 教程中的一些示例代码。我已附上我的邮递员请求。到目前为止看起来像这样:

package main

import (
    "fmt"
    "html/template"
    "log"
    "net/http"
    "strings"
    "time"
)

func sayhelloName(w http.ResponseWriter, r *http.Request) {
    r.ParseForm() //Parse url parameters passed, then parse the response packet for the POST body (request body)
    // attention: If you do not call ParseForm method, the following data can not be obtained form
    fmt.Println(r.Form) // print …
Run Code Online (Sandbox Code Playgroud)

forms parsing http go

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

从 go 中的 mongo 获取纯 json

mongo我正在尝试从ingo和 using 中获取一些数据gopkg.in/mgo.v2。我在 mongo 中有一个嵌套数据。

注意:这是一个旧数据库,我无法更改其结构,只想查询数据。

id我有一个包含字段,name和 的数据库details。我必须根据id 我的代码获取详细信息:

package main

import (
    "fmt"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type Person struct {
    Name string
    Id string
    Details string
}


func main() {

    session, err := mgo.Dial("mongodb://localhost:27017/naren")

    c := session.DB("naren").C("people")

    result := Person{}
    err = c.Find(bson.M{"id": "12345"}).One(&result)
    if err != nil {
        fmt.Println(err)
    }

    fmt.Println("Details:", result.Details)
    fmt.Println("Name:", result.Name)
    fmt.Println("Id:", result.Id)
}
Run Code Online (Sandbox Code Playgroud)

Id并且Name打印正常,但result.Details即使有数据也会打印空字符串。我只想将 json 打印为字符串或对 json 数据感到满意。 …

json go mongodb mgo

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

如何为Go地图指定指针

我在分配指向地图的指针时遇到问题.也许这是Go中的一个错误?或许我只是做错了什么.代码也在操场上,https://play.golang.org/p/p0NosPtkptz

这是一些说明问题的超简化代码.我正在创建一个名为collections的对象,其中包含两个集合对象.然后我循环遍历这些集合并将它们分配给地图,其中地图中的键是集合ID.

package main

import (
    "fmt"
)

type collection struct {
    ID string
    Name string
}

type collections struct {
    Collections []collection
}

type cache struct {
    Index int
    Collections map[string]*collection
}

func main() {
    var c cache
    c.Collections = make(map[string]*collection)

    // Create 2 Collections
    var col1, col2 collection
    col1.ID = "aa"
    col1.Name = "Text A"
    col2.ID = "bb"
    col2.Name = "Test B"

    // Add to Collections
    var cols collections
    cols.Collections = append(cols.Collections, col1)
    cols.Collections = append(cols.Collections, col2) …
Run Code Online (Sandbox Code Playgroud)

dictionary pointers go

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

golang map是按值还是按引用查找?

当我从Go中的地图中检索结构时,是否会获得该值的副本?或者我获得地图中的实际值?

例如,假设我有一个从字符串到结构的映射:

type quality struct {
    goodness    int
    crunchiness int 
}
cookies := make(map[string]quality)
cookies["nutrageous"] = quality{goodness: 3, crunchiness: 10}
Run Code Online (Sandbox Code Playgroud)

我想修改一个条目.

我可以指望返回的值与地图中的值相同吗?

c := cookies["nutrageous"]
c.goodness += 5
Run Code Online (Sandbox Code Playgroud)

或者我还必须返回并修改地图中的内容?

c := cookies["nutrageous"]
c.goodness += 5
cookies["nutrageous"] = c
Run Code Online (Sandbox Code Playgroud)

dictionary pass-by-reference pass-by-value go

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

未从.apk安装ARMv8库

我有一个包含本机二进制文件的应用程序。目前,我们只有ARMv5和x86二进制文件。使用这些,我们将二进制文件放入src/main/jniLibs/armeabi/libsyncthing.sosrc/main/jniLibs/x86/libsyncthing.so,在所有设备上都可以正常工作。

现在,我们要添加一个附加的ARMv8二进制文件,该文件位于中src/main/jniLibs/arm64-v8a/libsyncthing.so。根据此指南,这是正确的子文件夹。但是,当我在LG G4(支持ARMv8)上安装apk时,/lib/文件夹中未安装任何二进制文件,因此该应用程序无法正常工作。

我在这里做错了什么?

在这里,您可以看到二进制文件都包含在apk中:

apk内容

您可以在Github上的PR中看到完整的代码。二进制文件不包括在其中,但可以使用生成./gradlew buildNative

android android-ndk

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

为什么我的随机数不会更新?

我在Golang中做了以下(在Appengine上主持)

每当我通过运行dev_appserver命令启动应用程序并访问localhost:8080的页面时,我会得到一个页面,其中包含1到19之间的新随机数.但是在浏览器中刷新页面时,此数字不会更改.如果我通过运行dev_appserver来终止服务器并重新启动,我会得到一个新的随机数.如何获取页面刷新时更新的随机数.

代码如下:

包测试页

import (
    "fmt"
    "net/http"
    "math/rand"
    "time"
    "strconv"
)

func init() {
    http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, varHtml)
}
func random(min, max int) int {
    rand.Seed(time.Now().Unix())
    return rand.Intn(max - min) + min
}

var myrand = strconv.Itoa(random(1, 19))
var varHtml = `

Random number is ` + myrand 
Run Code Online (Sandbox Code Playgroud)

random google-app-engine go

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

时间以秒为单位

我有一个以下函数,计算时间startTime,正常运行时间: time.Since(startTime).String().

返回时间如下:

"uptime": "3m54.26744075s"
Run Code Online (Sandbox Code Playgroud)

如何将时间转换为秒,如下所示:

"uptime": "123456789"
Run Code Online (Sandbox Code Playgroud)

time go

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