Thank you for explaining that @brian Hatfield
On Sat, Jul 27, 2019, 00:02 Brian Hatfield <[email protected]> wrote:
> 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 <
> [email protected]> 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 [email protected].
>> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/CAN1Sb7xn%2B6nUSKJLK5%2BcB%3D%3DKHuS6WbFVu%3DZo6_hkqPp6cLugwg%40mail.gmail.com.