Структуры в го не могут быть разделены, все, что вы можете сделать, это сбросить значения полей, от которых вы хотите избавиться.
Вам понадобится map
, чтобы достичь того, что вы видите в Python.Но Go - это типизированный язык, поэтому для хранения произвольных данных вы можете использовать тип interface{}
.Поэтому вам нужно сделать это с map[string]interface{}
, поскольку вы храните данные разных типов, в противном случае создайте все строки и используйте map[string]string
.
Тогда для нарезки ну иди не имеет ничего в стандартном пакете для нарезки столбцов.К счастью, некоторые люди работали над пакетами с открытым исходным кодом, чтобы сделать вашу жизнь проще :) Я предлагаю вам один https://github.com/go-gota/gota
Если вам придется сделать это самостоятельно, вы можете сделать это:
package main
import "fmt"
type table []map[string]interface{}
func (t table) sliceColumns(cols ...string) table {
// create our new resulting table
var newTable = make(table, len(t))
// loop through table and populate our newTable
for i, m := range t {
var n = make(map[string]interface{}, len(cols))
for _, col := range cols {
if v, ok := m[col]; ok {
n[col] = v
}
}
newTable[i] = n
}
return newTable
}
func main() {
// define slice of Identification
var t = table{
{
"ID": "1",
"Phone": 155555,
},
{
"ID": "2",
"Email": "3Email",
},
{
"ID": "3",
"Email": "4Email",
"Value": "aaaa",
"Phone": "123",
},
}
fmt.Println(t.sliceColumns("ID", "Phone")) // [map[ID:1 Phone:155555] map[ID:2] map[ID:3 Phone:123]]
}