2016-09-14 109 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! –