2017-09-19 13 views
-2
package main 
import (
    "bytes" 
    "encoding/json" 
    "io/ioutil" 
    "log" 
    "net/http" 
    "os" 
    "os/signal" 
    "strings" 
    "unicode/utf8" 
    "sync" 
    "github.com/robfig/cron" 
    cpu "github.com/shirou/gopsutil/cpu" 
    "fmt" 
) 

const NumofResource = 4 

// 구조체 
type HostInfo struct { 
    Hostid string 
} 

var c *cron.Cron 
var lastCPUTimes []cpu.TimesStat 

func main() { 
    fmt.Println("1.main.go > main() start") 
    defer l4g.Close() 

var err interface{} 
lastCPUTimes, err = cpu.Times(false) //nil 
fmt.Println("2.main.go > err", err) 
fmt.Println("3.main.go > lastCPUTimes", lastCPUTimes) 

if err != nil { 
    l4g.Error(err) 
} 
} 

주 기능이 먼저 실행됩니다. 그러나 cpu_windows.go라는 라이브러리가 먼저 실행됨을 확인했습니다. 왜?주 기능이 작동하지 않습니다.

cpu_windows.go : 시간 거짓 (부울)

cpu_windows.go : common.ProcGetSystemTimes.Call 1

cpu_windows.go : 시간 참 (부울)

cpu_windows.go : perCPUTimes()

1.main.go 반환 : 주() 시작을

cpu_windows.go : 시간 (BOOL) 거짓

cpu_windows.go : common.ProcGetSystemTimes.Call 1

2.main.go : 잘못

답변

2

specification says : 패키지가 수입, 수입 패키지가있는 경우

패키지 자체를 초기화하기 전에 초기화됩니다.

프로그램 실행 기본 패키지를 초기화 한 후 메인 함수를 호출하는 것으로 시작한다.

가져온 cpu 패키지의 initialization codemain에서 코드 전에 실행되어 다음과 같습니다.