2016-09-14 108 views
-1

我剛開始使用Golang,對於與其他軟件包進行交互以及使用結構體感到困惑。現在我只是試圖返回gopsutil庫中的方法生成的結構。下面的函數的具體回報:enter link description here在Golang中返回結構

我給這家代碼如下:

package main 

import (
    "fmt" 

    "github.com/shirou/gopsutil/cpu" 

) 

func main() { 

    cpu_times = getCpuTime() 
    fmt.Println(cpu_times) 

} 

func getCpuTime() TimesStat { 
    ct, _ := cpu.Times(false) 

    return ct 
} 

這將返回TimesStat爲未定義。我試着返回一些不同的語法變體,但是我發現編譯的唯一返回值是interface{},它使得括號內的結構(例如[{values...}])變成了一些其他問題。我似乎無法找到我想要做的事情的任何例子。任何幫助讚賞謝謝。

回答

5

你需要包括包名的類型之前,像這樣:

func getCpuTime() []cpu.TimesStat { // with package name before type 
    ct, _ := cpu.Times(false) 

    return ct 
} 

因爲這是cpu.TimesStat片,你可能想在調用函數中添加一個索引或改變功能,只是退回單一cpu.TimesStat。 (感謝@algrebre)

+2

[cpu#Times](https://godoc.org/github.com/shirou/gopsutil/cpu#Times)返回'([] TimesStat,錯誤)'so'getCpuTime() '應該返回'[] cpu.TimeStat'。自從插入兩個字符後,我無法進行如此小的編輯。 – algrebe

+0

隨意見更改,謝謝@algrebe! –