Eerste stapjes met Golang..

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Hi Tweakers,

Ik ben m'n eerste stapjes aan het zetten met GoLang en omdat ik graag wat dingen naar Datadog zou sturen als test gebruik ik deze module : https://github.com/zorkian/go-datadog-api

Ik wil dus een metric versturen en dacht dat dit zou moeten werken :

code:
1
2
3
4
5
client := datadog.NewClient("f66eaa80d4fb8158981e1aa4a42df01c", "310936040a10a57d676869d0dc7bdc8b630b402c")
    host := "testdennis"
var test datadog.Metric
    test.SetHost(host)
metric := client.PostMetrics(test)


Maar vervolgens krijg ik onderstaande fout :
./main.go:20:30: cannot use test (type datadog.Metric) as type []datadog.Metric in argument to client.PostMetrics
Ik heb al van alles geprobeerd om dit probleem te fixen maar ik snap niet wat er nu exact mis gaat. Dus ik hoop dat er hier iemand is die mij even de goede richting op wil verwijzen :)

Alvast bedankt!! :>

Owner of DBIT Consultancy

Beste antwoord (via DennusB op 11-06-2020 20:51)


  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

DennusB schreef op donderdag 11 juni 2020 @ 20:01:
[...]


Ze verwachten toch gewoon een slice? Dan zou dit toch gewoon moeten werken :

Go:
1
2
3
4
5
var test datadog.Metric
    test.SetHost(host)
    test.SetMetric("test.metric")
    fmt.Println(*test.Host)
    metric := client.PostMetrics(test)


Volgens mij gaat er ergens iets bij de conversie niet goed?
Een slice is niets meer dan een lijst van dynamische grootte. De test die je in PostMetrics stopt is een enkel datadog.Metric, maar hij verwacht een lijst van datadog.Metric en een enkel element word niet automatisch omgezet naar een lijst met 1 element er in.
webfreakz.nl schreef op donderdag 11 juni 2020 @ 20:22:
Kan je het als volgt eens proberen?
Go:
1
2
3
4
5
6
7
8
9
var test datadog.Metric
test.SetHost(host)
test.SetMetric("test.metric")
fmt.Println(*test.Host)

var items []datadog.Metric
append(items, test)

metric := client.PostMetrics(items)
ik zou
Go:
1
append(items, test)
veranderen in
Go:
1
items = append(items, test)
, omdat de append functie de variabele zelf niet veranderd, maar een kopie van de lijst terug geeft met daar aan toegevoegd test.

Alle reacties


Acties:
  • 0 Henk 'm!

  • triet
  • Registratie: Januari 2003
  • Niet online
Volgens mij wordt er een array verwacht in PostMetrics en geef je een enkele metric op.

Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
triet schreef op donderdag 11 juni 2020 @ 19:52:
Volgens mij wordt er een array verwacht in PostMetrics en geef je een enkele metric op.
Ze verwachten toch gewoon een slice? Dan zou dit toch gewoon moeten werken :

code:
1
2
3
4
5
var test datadog.Metric
    test.SetHost(host)
    test.SetMetric("test.metric")
    fmt.Println(*test.Host)
    metric := client.PostMetrics(test)


Volgens mij gaat er ergens iets bij de conversie niet goed?

Owner of DBIT Consultancy


Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 01-04 15:43

webfreakz.nl

el-nul-zet-é-er

Kan je het als volgt eens proberen?
code:
1
2
3
4
5
6
7
8
9
var test datadog.Metric
test.SetHost(host)
test.SetMetric("test.metric")
fmt.Println(*test.Host)

var items []datadog.Metric
append(items, test)

metric := client.PostMetrics(items)

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

DennusB schreef op donderdag 11 juni 2020 @ 20:01:
[...]


Ze verwachten toch gewoon een slice? Dan zou dit toch gewoon moeten werken :

Go:
1
2
3
4
5
var test datadog.Metric
    test.SetHost(host)
    test.SetMetric("test.metric")
    fmt.Println(*test.Host)
    metric := client.PostMetrics(test)


Volgens mij gaat er ergens iets bij de conversie niet goed?
Een slice is niets meer dan een lijst van dynamische grootte. De test die je in PostMetrics stopt is een enkel datadog.Metric, maar hij verwacht een lijst van datadog.Metric en een enkel element word niet automatisch omgezet naar een lijst met 1 element er in.
webfreakz.nl schreef op donderdag 11 juni 2020 @ 20:22:
Kan je het als volgt eens proberen?
Go:
1
2
3
4
5
6
7
8
9
var test datadog.Metric
test.SetHost(host)
test.SetMetric("test.metric")
fmt.Println(*test.Host)

var items []datadog.Metric
append(items, test)

metric := client.PostMetrics(items)
ik zou
Go:
1
append(items, test)
veranderen in
Go:
1
items = append(items, test)
, omdat de append functie de variabele zelf niet veranderd, maar een kopie van de lijst terug geeft met daar aan toegevoegd test.

Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Gropah schreef op donderdag 11 juni 2020 @ 20:39:
[...]

Een slice is niets meer dan een lijst van dynamische grootte. De test die je in PostMetrics stopt is een enkel datadog.Metric, maar hij verwacht een lijst van datadog.Metric en een enkel element word niet automatisch omgezet naar een lijst met 1 element er in.


[...]


ik zou
Go:
1
append(items, test)
veranderen in
Go:
1
items = append(items, test)
, omdat de append functie de variabele zelf niet veranderd, maar een kopie van de lijst terug geeft met daar aan toegevoegd test.
toon volledige bericht
Duidelijk verhaal. Dankjewel voor de uitleg. Met je change werkt het nu zo te zien wel _/-\o_

Owner of DBIT Consultancy

Pagina: 1