Difference between revisions of "Golang Maps"

From UVOO Tech Wiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 41: Line 41:
 
# Nested Structs
 
# Nested Structs
 
https://stackoverflow.com/questions/24809235/how-to-initialize-a-nested-struct
 
https://stackoverflow.com/questions/24809235/how-to-initialize-a-nested-struct
 +
```
 +
type Configuration struct {
 +
    Val string
 +
    Proxy Proxy
 +
}
 +
 +
type Proxy struct {
 +
    Address string
 +
    Port    string
 +
}
 +
 +
func main() {
 +
 +
    c := &Configuration{
 +
        Val: "test",
 +
        Proxy: Proxy{
 +
            Address: "addr",
 +
            Port:    "port",
 +
        },
 +
    }
 +
    fmt.Println(c)
 +
    fmt.Println(c.Proxy.Address)
 +
}
 +
```

Latest revision as of 01:04, 4 August 2021

package main

import (
    // "string"
    "fmt"
    "github.com/go-resty/resty/v2"
    "encoding/json"
    "reflect"
)

var PDAuthToken = ""
var url = "https://api.pagerduty.com/services/XXXXXXX"

func test1() {
   client := resty.New()
   rsp,err := client.R().SetHeader("Accept", "application/json").SetHeader("Authorization", "Token token="+PDAuthToken).Get(url)
    if err != nil {
        fmt.Println(err)
        return
    }
    rspBody := rsp.Body()
    rspJSON := string(rspBody)
    // Declared an empty map interface
    var result map[string]interface{}
    // Unmarshal or Decode the JSON to the interface.
    json.Unmarshal([]byte(rspJSON), &result)

    fmt.Println("Type:", reflect.TypeOf(result))
    fmt.Println("Service :", result["service"])
    service, valid := result["service"].(map[string]interface{})
    fmt.Println("service_alert_grouping_timeout :", service["alert_grouping_timeout"])
     _ = valid
}

func main(){
    test1()
}

Nested Structs

https://stackoverflow.com/questions/24809235/how-to-initialize-a-nested-struct

type Configuration struct {
    Val string
    Proxy Proxy
}

type Proxy struct {
    Address string
    Port    string
}

func main() {

    c := &Configuration{
        Val: "test",
        Proxy: Proxy{
            Address: "addr",
            Port:    "port",
        },
    }
    fmt.Println(c)
    fmt.Println(c.Proxy.Address)
}