# Why the value of array Z[64] still are 0/1

``````// task1 project main.go

package main

import (

&quot;fmt&quot;

&quot;math/big&quot;

//&quot;os&quot;

//&quot;strconv&quot;

)

//var b [64]big.Rat

func GFS(z [64]big.Rat, c big.Rat, y [6]uint, w [6]uint, count uint) {

var temp big.Rat

switch count {

case 0:

if y[0] == 1 &amp;&amp; y[1] == 1 {

temp.Mul(&amp;c, big.NewRat(14, 15))

w[1] = 1

GFS(z, temp, y, w, 1+count)

temp.Mul(&amp;c, big.NewRat(1, 15))

w[1] = 0

GFS(z, temp, y, w, 1+count)

} else {

w[1] = y[1]

GFS(z, c, y, w, 1+count)

}

case 1:

if y[2] == 1 &amp;&amp; y[3] == 1 {

temp.Mul(&amp;c, big.NewRat(14, 15))

w[3] = 1

GFS(z, temp, y, w, 1+count)

temp.Mul(&amp;c, big.NewRat(1, 15))

w[3] = 0

GFS(z, temp, y, w, 1+count)

} else {

w[3] = y[3]

GFS(z, c, y, w, 1+count)

}

case 2:

if y[4] == 1 &amp;&amp; y[5] == 1 {

temp.Mul(&amp;c, big.NewRat(14, 15))

w[5] = 1

GFS(z, temp, y, w, 1+count)

temp.Mul(&amp;c, big.NewRat(1, 15))

w[5] = 0

GFS(z, temp, y, w, 1+count)

} else {

w[5] = y[5]

GFS(z, c, y, w, 1+count)

}

case 3:

var m uint

for i := uint(0); i &lt; 6; i++ {

m += w[i] &lt;&lt; i

}

//fmt.Printf(z[m].String())

temp.Mul(&amp;c, big.NewRat(1, 63))

default:

break

}

}

func main() {

var z [64]big.Rat

var y [6]uint

var w [6]uint

var c = *big.NewRat(1, 1)

for i := 1; i &lt; 64; i++ {

z[i] = *big.NewRat(0, 1)

}

for i := uint(1); i &lt; 64; i++ {

y[0] = i &amp; 0x1

y[1] = i &amp; 0x2 &gt;&gt; 1

y[2] = i &amp; 0x4 &gt;&gt; 2

y[3] = i &amp; 0x8 &gt;&gt; 3

y[4] = i &amp; 0x10 &gt;&gt; 4

y[5] = i &amp; 0x20 &gt;&gt; 5

w[0] = y[0]

w[2] = y[2]

w[4] = y[4]

GFS(z, c, y, w, 0)

//fmt.Println(y)

}

for i := 0; i &lt; 64; i++ {

fmt.Printf(z[i].String())

fmt.Println()

}

}
``````

Why Why the value of array Z[64] still are 0/1

Because 64 is not `< 64`.

In Go (and by the way in another programming languages) Arrays starts at index 0, so if you declar an array a[64] int, you got an array of 0…63 elements