如何在Go中传递嵌套结构

A little 2 file application that reads a config file and stores it in a struct. How do pass part of the config struct to the fetchTemperature function?

Configuration

package configuration

type Config struct {
    Temperatures []struct {
        Temperature
    }
}

type Temperature struct {
    AppId string
}

func Load() Config {
    var c Config
    // -- 8< -- snip -- 8< --
    return c
}

Main

package main

import "configuration"

var c configuration.Config = configuration.Load()

func main() {
    for _, t := range c.Temperatures {
        fetchTemperature(t)
    }
}

func fetchTemperature(t configuration.Temperature) {
    // -- 8< -- snip -- 8< --
}

Gives me:

cannot use t (type struct { configuration.Temperature }) as type configuration.Temperature in argument to fetchTemperature

Isn't t of configuration.Temperature and if not, how do I pass the struct around?

type Config struct {
    Temperatures []struct {
        Temperature
    }
}

t is Config.Temperatures[i]. For Temperature from anonymous struct { Temperature }, write t.Temperature to select the field from the struct.

For example,

package main

import "configuration"

var c configuration.Config = configuration.Load()

func main() {
    for _, t := range c.Temperatures {
        fetchTemperature(t.Temperature)
    }
}

func fetchTemperature(t configuration.Temperature) {
    //  -- 8< -- snip -- 8< --
}

I suspect that your confusion arose because you wrote

type Config struct {
    Temperatures []struct {
        Temperature
    }
}

Temperatures is a slice of type anonymous struct { configuration.Temperature }.

What you probably wanted was

type Config struct {
    Temperatures []Temperature
}

Temperatures is a slice of type configuration.Temperature.