mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2025-08-16 19:31:37 +00:00
good good study, day day up!
This commit is contained in:
104
vendor/gopl.io/ch4/movie/main.go
generated
vendored
Normal file
104
vendor/gopl.io/ch4/movie/main.go
generated
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
|
||||
// See page 108.
|
||||
|
||||
// Movie prints Movies as JSON.
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
//!+
|
||||
type Movie struct {
|
||||
Title string
|
||||
Year int `json:"released"`
|
||||
Color bool `json:"color,omitempty"`
|
||||
Actors []string
|
||||
}
|
||||
|
||||
var movies = []Movie{
|
||||
{Title: "Casablanca", Year: 1942, Color: false,
|
||||
Actors: []string{"Humphrey Bogart", "Ingrid Bergman"}},
|
||||
{Title: "Cool Hand Luke", Year: 1967, Color: true,
|
||||
Actors: []string{"Paul Newman"}},
|
||||
{Title: "Bullitt", Year: 1968, Color: true,
|
||||
Actors: []string{"Steve McQueen", "Jacqueline Bisset"}},
|
||||
// ...
|
||||
}
|
||||
|
||||
//!-
|
||||
|
||||
func main() {
|
||||
{
|
||||
//!+Marshal
|
||||
data, err := json.Marshal(movies)
|
||||
if err != nil {
|
||||
log.Fatalf("JSON marshaling failed: %s", err)
|
||||
}
|
||||
fmt.Printf("%s\n", data)
|
||||
//!-Marshal
|
||||
}
|
||||
|
||||
{
|
||||
//!+MarshalIndent
|
||||
data, err := json.MarshalIndent(movies, "", " ")
|
||||
if err != nil {
|
||||
log.Fatalf("JSON marshaling failed: %s", err)
|
||||
}
|
||||
fmt.Printf("%s\n", data)
|
||||
//!-MarshalIndent
|
||||
|
||||
//!+Unmarshal
|
||||
var titles []struct{ Title string }
|
||||
if err := json.Unmarshal(data, &titles); err != nil {
|
||||
log.Fatalf("JSON unmarshaling failed: %s", err)
|
||||
}
|
||||
fmt.Println(titles) // "[{Casablanca} {Cool Hand Luke} {Bullitt}]"
|
||||
//!-Unmarshal
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
//!+output
|
||||
[{"Title":"Casablanca","released":1942,"Actors":["Humphrey Bogart","Ingr
|
||||
id Bergman"]},{"Title":"Cool Hand Luke","released":1967,"color":true,"Ac
|
||||
tors":["Paul Newman"]},{"Title":"Bullitt","released":1968,"color":true,"
|
||||
Actors":["Steve McQueen","Jacqueline Bisset"]}]
|
||||
//!-output
|
||||
*/
|
||||
|
||||
/*
|
||||
//!+indented
|
||||
[
|
||||
{
|
||||
"Title": "Casablanca",
|
||||
"released": 1942,
|
||||
"Actors": [
|
||||
"Humphrey Bogart",
|
||||
"Ingrid Bergman"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Title": "Cool Hand Luke",
|
||||
"released": 1967,
|
||||
"color": true,
|
||||
"Actors": [
|
||||
"Paul Newman"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Title": "Bullitt",
|
||||
"released": 1968,
|
||||
"color": true,
|
||||
"Actors": [
|
||||
"Steve McQueen",
|
||||
"Jacqueline Bisset"
|
||||
]
|
||||
}
|
||||
]
|
||||
//!-indented
|
||||
*/
|
Reference in New Issue
Block a user