2016-09-14 25 views
-1

私はGolangから始めています。私は他のパッケージとのやりとりや構造体の使用について非常に混乱しています。今はgopsutilライブラリのメソッドで生成された構造体を返そうとしています。具体的に次の関数の戻り値:このためenter link description hereGolangで構造体を返す

私のコードは次のとおりです。

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、error)を返します。' getCpuTime() '[] cpu.TimeStat'を返すべきです。私はその2文字の挿入以来、そのような小さな編集を行うことはできません。 – algrebe

+0

がコメントで変更されました。ありがとう@algrebe! –

関連する問題