type TestObject struct {
kind string `json:"kind"`
id string `json:"id, omitempty"`
name string `json:"name"`
email string `json:"email"`
}
func TestCreateSingleItemResponse(t *testing.T) {
testObject := new(TestObject)
testObject.kind = "TestObject"
testObject.id = "f73h5jf8"
testObject.name = "Yuri Gagarin"
testObject.email = "Yuri.Gagarin@Vostok.com"
fmt.Println(testObject)
b, err := json.Marshal(testObject)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(b[:]))
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
[ `go test -test.run="^TestCreateSingleItemResponse$"` | done: 2.195666095s ]
{TestObject f73h5jf8 Yuri Gagarin Yuri.Gagarin@Vostok.com}
{}
PASS
Run Code Online (Sandbox Code Playgroud)
为什么JSON基本上是空的?
编译/ json中是否存在未包含未导出字段的技术原因?如果没有,这是一个任意的决定可以有一个额外的后门选项(说'+')包括即使未导出?
要求客户端代码导出以获得此功能感觉很不幸,特别是如果小写提供封装或者对编组结构的决定要比它们的设计晚得多.
人们如何处理这个问题?只出口一切?
此外,不导出字段名称使得难以遵循建议的习语.我认为如果结构X有字段Y,则不能有一个存取方法Y().如果你想提供对Y的界面访问,你必须为getter提出一个新的名字,不管你会得到什么非惯用的东西,根据http://golang.org/doc/effective_go.html#Getters
我正在玩Go并且难以理解为什么json编码和解码对我不起作用
我想我几乎逐字地复制了这些例子,但是输出结果表明编组和解组都没有返回任何数据.他们也没有给出错误.
任何人都可以暗示我哪里出错了?
我的示例代码:去游乐场
package main
import "fmt"
import "encoding/json"
type testStruct struct {
clip string `json:"clip"`
}
func main() {
//unmarshal test
var testJson = "{\"clip\":\"test\"}"
var t testStruct
var jsonData = []byte(testJson)
err := json.Unmarshal(jsonData, &t)
if err != nil {
fmt.Printf("There was an error decoding the json. err = %s", err)
return
}
fmt.Printf("contents of decoded json is: %#v\r\n", t)
//marshal test
t.clip = "test2"
data, err := json.Marshal(&t)
if err != nil {
fmt.Printf("There was …Run Code Online (Sandbox Code Playgroud) 我试图从我的postgres数据库中检索一些数据并将它们打印localhost/db为json.我成功地在没有json的情况下打印它们,但我需要它们在json中.
main.go:
package main
import (
"database/sql"
"encoding/json"
"fmt"
"log"
"net/http"
_ "github.com/lib/pq"
)
type Book struct {
isbn string
title string
author string
price float32
}
var b []Book
func main() {
db, err := sql.Open("postgres", "postgres://****:****@localhost/postgres?sslmode=disable")
if err != nil {
log.Fatal(err)
}
rows, err := db.Query("SELECT * FROM books")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var bks []Book
for rows.Next() {
bk := new(Book)
err := rows.Scan(&bk.isbn, &bk.title, &bk.author, &bk.price)
if err …Run Code Online (Sandbox Code Playgroud) 我有以下代码。这确实将前景图像(logo.jpg)粘贴到背景图像(background.jpg)上。粘贴此前景图像时,我想设置此前景图像的不透明度。我使用了 DrawMask (http://golang.org/doc/articles/image_draw.html),但似乎我在这里遗漏了一些东西。请参阅下面的代码。有人有什么想法吗?
package main
import (
"os"
"image/draw"
"image"
"image/jpeg"
)
func main() {
//Background image
fImg1, _ := os.Open("background.jpg")
defer fImg1.Close()
img1, _, _ := image.Decode(fImg1)
//Logo to stick over background image
fImg2, _ := os.Open("logo.jpg")
defer fImg2.Close()
img2, _, _ := image.Decode(fImg2)
//Mask image (that is just a solid light gray image of same size as logo)
fmask, _ := os.Open("mask.jpg")
defer fImg2.Close()
mask, _, _ := image.Decode(fmask)
//Create a new blank image m
m := image.NewRGBA(image.Rect(0, …Run Code Online (Sandbox Code Playgroud)