Go言語を学習し始めたばかりで、スライスからランダムなサブシーケンスを選択する関数を作成したいと考えています。しかし、私はこのスライスにどのようなタイプの値を格納できるか分かりません。これらは整数、文字列、またはいくつかの構造体の要素です。たとえば、のは、私が構造を持っていると仮定してみましょう:入力スライス引数に応じて異なる操作を実行する関数を作成する
type person struct {
name string
age int
}
type animal struct {
name string
age int
breed string
}
は今、私は次のように機能getRandomSequenceを構築したい:スライスSと機能がよりリットルランダムに選択された要素が含まれているスライスを返す長さl引数として与えられました私が遭遇した問題は、 - 可能なスライスに対してこの機能を動作させる方法でした。私は以下をしようとしました:
func GetRandomSequence(S interface{}, l int) []interface{} {
switch S.(type) {
case person:
// Do random selection of l elements from S and return them
case animal:
// Do random selection of l elements from S and return them
case int:
// Do random selection of l elements from S and return them
}
return " Not Recognised"
}
私はそのような機能をどのように書くことができますか? Sがどんなタイプの単一要素であっても(つまり、[]interface{}
の代わりにちょうどinterface{}
になる)類似の(つまり、一般的な)関数を動作させることができますが、この問題の解決方法を見つけることはできません。
質問の本文が意味するように異なるスライスタイプで同じ操作を実行する方法を尋ねられていますか、タイトルに何が書かれているかを尋ねていますか? –
あなたが新しくなれば、最高の助言は言語と戦わずにそのような機能を書くことではなく、 2つまたは3つ。 – Volker