インターフェイス{}のスライスから「nil」を削除し、インターフェイス{}の新しいスライスを生成する最適な方法は何ですか?インターフェイスのスライスから除外するゴラン{
Slice := []interface{}{1, nil, "string", nil}
何も良いことはありませんか?
インターフェイス{}のスライスから「nil」を削除し、インターフェイス{}の新しいスライスを生成する最適な方法は何ですか?インターフェイスのスライスから除外するゴラン{
Slice := []interface{}{1, nil, "string", nil}
何も良いことはありませんか?
newSlice := make([]interface{}, 0, len(Slice))
for _, item := range Slice {
if item != nil {
newSlice = append(newSlice, item)
}
}
また、この例のようなタイプのスイッチを使用することができます。
slice := []interface{}{1, nil, "string", nil}
newSlice := make([]interface{}, 0, len(slice))
for _, val := range(slice){
switch val.(type) {
case string, int: // add your desired types which will fill newSlice
newSlice = append(newSlice, val)
}
}
fmt.Printf("newSlice: %v\tType: %T\n", newSlice, newSlice)
出力:
newSlice: [1 string] Type: []interface {}
以内に完全な例を見ることができますが、文字通り心に_nothing_来ますか? – JimB
私はループスルーしてnilをチェックしました。 –