Welcome to Go! There's a couple things going on here, which you can break down into two overarching parts.
Part 1, var/type definition: var testCases = []struct { description string planet Planet seconds float64 expected float64 } This says the following things: - Create a new variable, called testCases - testCases will contain a slice of (anonymous) structs ( []struct {.....} ) - and each of those structs will contain 4 fields: description, planet, seconds, expected Part 2, the instantiation/struct literal: { { description: "age on Earth", planet: "Earth", seconds: 1000000000, expected: 31.69, }, { description: "age on Mercury", planet: "Mercury", seconds: 2134835688, expected: 280.88, }, [....etc....] } This says: - Instantiate this slice of structs right in-line (this is called a literal) - Repeated anonymous struct literals for each item in the slice The likely purpose of this code, overall, is so that later on down, something can iterate `testCases` and get a number of `testCase`, each with test expected values. You could also write this code like: type TestCase struct { description string planet Planet seconds float64 expected float64 } var testCases []TestCase testCases = append(testCases, TestCase{ description: "age on Uranus", planet: "Uranus", seconds: 3210123456, expected: 1.21, }) [.....etc....] with an append call for each case you want to add. The example you provided just streamlines the whole process, and takes advantage of slice literals, anonymous struct definitions, and implicit struct literals within a slice definition. Hope that helps! Brian On Fri, Jul 26, 2019 at 2:16 PM thatipelli santhosh < santhoshthatipelli...@gmail.com> wrote: > Hi , > > I am learning Go step by step. I have go through with slices and structs > but this below code sample is using slices and structs both at a time. > > Can anyone please explain this piece of code? this would be more helpful > to me to understand this. Thank you! > > var testCases = []struct { > description string > planet Planet > seconds float64 > expected float64 > }{ > { > description: "age on Earth", > planet: "Earth", > seconds: 1000000000, > expected: 31.69, > }, > { > description: "age on Mercury", > planet: "Mercury", > seconds: 2134835688, > expected: 280.88, > }, > { > description: "age on Venus", > planet: "Venus", > seconds: 189839836, > expected: 9.78, > }, > { > description: "age on Mars", > planet: "Mars", > seconds: 2329871239, > expected: 39.25, > }, > { > description: "age on Jupiter", > planet: "Jupiter", > seconds: 901876382, > expected: 2.41, > }, > { > description: "age on Saturn", > planet: "Saturn", > seconds: 3000000000, > expected: 3.23, > }, > { > description: "age on Uranus", > planet: "Uranus", > seconds: 3210123456, > expected: 1.21, > }, > { > description: "age on Neptune", > planet: "Neptune", > seconds: 8210123456, > expected: 1.58, > }, > } > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/de5ac14e-0f10-4e84-ae07-10aecd9eb11d%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/de5ac14e-0f10-4e84-ae07-10aecd9eb11d%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CANGiwgZaYALN-YQk75DoHQ-P1hSvsnz6AC_14%3DL51sPFq0WZoA%40mail.gmail.com.