Golang中的数据结构

时间:2016-04-16 23:18:03

标签: json go

询问Golang问题是否来自Ruby& JS世界,如果这是一个相当简单的Go问题,请耐心等待:)

在API上使用Gorilla toolkit,我不确定我的想法是否完全正确。我一直在阅读非常优秀的The Go Programming Language,但我现在还不是Go的专家。当发回JSON响应时,我已经做了类似下面的事情来发回这样的对象:

{ "healthy": true, "version": "0.0.1" }

但是我不确定这是一种最佳做法还是惯用法来创建像appHealth这样的一次性结构,或者我是否想得太多,就像我想的那样在JS中,我只是抛出一个对象文字并将其JSON-ified版本返回给客户端。教我明智的地鼠。

谢谢!

package main

import (
    "encoding/json"
    "log"
    "net/http"
    "os"

    "github.com/gorilla/mux"
)

type appHealth struct {
    Healthy bool
    Version string
}

func health(w http.ResponseWriter, r *http.Request) {
    health := appHealth{true, "0.0.1"}
    json.NewEncoder(w).Encode(health)
}

func main() {
    port := os.Getenv("PORT")
    router := mux.NewRouter().StrictSlash(false)
    router.HandleFunc("/health", health)
    log.Fatal(http.ListenAndServe(":"+port, router))
}

1 个答案:

答案 0 :(得分:1)

看起来很不错。不要害怕为其增加意义。

type Version string  

然后,您可以拥有与类型

相关联的版本的逻辑

或者您可能想查看juju's version package

如果你真的有一个结构,你可以用文字做一个匿名结构。

health := struct{ 
    Health bool
    Version string
}{
    true,
    "1.2.3",
}