sdf
This commit is contained in:
parent
cc6c71ce15
commit
20a62ace05
3
headFirst/generics/go.mod
Normal file
3
headFirst/generics/go.mod
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
module main
|
||||
|
||||
go 1.25.1
|
||||
67
headFirst/generics/main.go
Normal file
67
headFirst/generics/main.go
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
type Message struct {
|
||||
Key string `json:"id"`
|
||||
Val string `json:"user"`
|
||||
}
|
||||
|
||||
type Receiver struct {
|
||||
First string `json:"id"`
|
||||
Second string `json:"user"`
|
||||
}
|
||||
|
||||
type Test struct {
|
||||
Name string
|
||||
Age float64
|
||||
Parents []string
|
||||
}
|
||||
|
||||
|
||||
func main() {
|
||||
m := Message{"lol","kek"}
|
||||
b,err := json.Marshal(m)
|
||||
if err != nil {
|
||||
log.Fatalln("Couldn marshal")
|
||||
}
|
||||
fmt.Println("Binary format on marshalled JSON is ",b)
|
||||
fmt.Println("This is how lookg in string ",string(b))
|
||||
|
||||
var k Receiver
|
||||
err = json.Unmarshal(b,&k)
|
||||
if err != nil {
|
||||
log.Fatalln("Couldn UNmarshal")
|
||||
}
|
||||
// fmt.Println("This is how looks unmarshalled JSON ", k)
|
||||
|
||||
b = []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`)
|
||||
var f interface{}
|
||||
_ = json.Unmarshal(b,&f)
|
||||
fmt.Println(f)
|
||||
|
||||
l := f.(map[string]interface{})
|
||||
for k, v := range l {
|
||||
switch vv := v.(type) {
|
||||
case string:
|
||||
fmt.Println(k, "is string", vv)
|
||||
case float64:
|
||||
fmt.Println(k, "is float64", vv)
|
||||
case []interface{}:
|
||||
fmt.Println(k, "is an array:")
|
||||
for i, u := range vv {
|
||||
fmt.Println(i, u)
|
||||
}
|
||||
default:
|
||||
fmt.Println(k, "is of a type I don't know how to handle")
|
||||
}
|
||||
}
|
||||
|
||||
var e Test
|
||||
_ = json.Unmarshal(b,&e)
|
||||
fmt.Println(e)
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user