在Golang中返回一个结构

eig*_*nts 0 oop struct go

我刚开始使用Golang,我对与其他软件包交互和使用结构非常困惑.现在我只是试图返回由gopsutil库中的方法生成的结构.具体来说,返回以下功能:在此处输入链接描述

我的代码如下:

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
}
Run Code Online (Sandbox Code Playgroud)

这将返回TimesStatundefined.我尝试返回一些不同的语法变体,但是我发现编译的唯一返回值是interface{},它让我得到括号内的结构(例如[{values...}]),这导致了一些其他问题.我似乎无法找到任何我想要做的例子.任何帮助表示感谢.

mat*_*t.s 7

您需要在类型之前包含包名称,如下所示:

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

    return ct
}
Run Code Online (Sandbox Code Playgroud)

因为这是一个片段cpu.TimesStat,你可能想在调用函数中添加一个索引或者更改函数只返回一个cpu.TimesStat.(感谢@algrebre)

  • [cpu#Times](https://godoc.org/github.com/shirou/gopsutil/cpu#Times)返回`([] TimesStat,错误)`所以`getCpuTime()`应该返回`[] cpu.TimeStat `.我不能进行这么小的编辑,因为它插入了两个字符. (2认同)