The Author Online Book Forums are Moving

The Author Online Book Forums will soon redirect to Manning's liveBook and liveVideo. All book forum content will migrate to liveBook's discussion forum and all video forum content will migrate to liveVideo. Log in to liveBook or liveVideo with your Manning credentials to join the discussion!

Thank you for your engagement in the AoF over the years! We look forward to offering you a more enhanced forum experience.

as per listing 6.6 I have used NumCPU() function to find out the number of cpus on my machine. here is my code

package main

import "runtime"
import "fmt"

func main() {
fmt.Println(runtime.NumCPU())
}


This outputs "4".

but my mac hardware overview displays the below information
processor name: intel core i7
Number of processors: 1
Total number of cores: 2

form where does that 4 come from which is displayed by running that go program.
code:
package main

import "fmt"
import "time"

type SpeedingTicket struct {
DocumentNumber int
Driver
IssuingOfficer string
Location string
PostedSpeed int
ActualSpeed int
DateTime time.Time
}

type Driver struct {
LicenseNumber string
DriverName string
Address string
City string
State string
PostalCode int
LicenseExpiration time.Time
}

func main() {

tix := SpeedingTicket{
84756,
&Driver{"G234-0598-01287",
"Speedy Gonzales",
"123 Any Street",
"Albuquerque",
"NM",
51234,
time.Date(2017, time.May, 30, 0, 0, 0, 0, time.UTC),
},
"Officer D. Duck",
"Intersection of HWY 54 and HWY 41",
55,
67,
time.Date(2013, time.May, 4, 12, 51, 0, 0, time.UTC),
}

fmt.Println(*tix.Driver)

}

when I execute that I see this message

./types.go:30: cannot use Driver literal (type *Driver) as type Driver in field value

only if I change the embedded type "Driver" in "SpeedingTicket" struct to *Driver it works