我有一個slice
var data = []string{"test1", "test2", "test3", .....}
這個陣列是活的,不是寫死的
現在要建立一個map[string]interface{}
for _, name := range data {
datalist = append(datalist, map[string]interface{}{
name: true,
})
}
印出datalist會得到
[map[test1:true] map[test2:true] map[test3:true] .....]
但因為我程式需求,需要得到
[map[test1:true test2:true test3:true .....]]
之前寫都是欄位固定的
但現在欄位不固定...
請問網上的手們,應該怎麼改比較好?
更新補充:
package main
import "fmt"
func main() {
datalist := make([]map[string]interface{}, 0)
var data = []string{"test1", "test2", "test3"}
for _, name := range data {
datalist = append(datalist, map[string]interface{}{
name:true,
})
}
fmt.Println(datalist)
}
如上程式
我對於map interface的操作沒那麼熟
不知道有沒有人可以提點一下
更新補充:解決方法
搞半天
經由powerc提醒,總算找到方法
package main
import "fmt"
func main() {
datalist := make(map[string]bool, 0)
data := []string{"test1", "test2", "test3"}
for _, name := range data {
datalist[name] = true
}
fmt.Println(datalist)
}
印出:
map[test1:true test2:true test3:true]
***先聲明我是個完全不懂golang的人
只是透過上網查一查,自己改了一下,達成你要的結果***
package main
import "fmt"
func main() {
var data = []string{"test1", "test2", "test3"}
//建立這個叫做map的array(?)
datalist := []map[string]interface{}{}
//先塞入一個element
datalist = append(datalist, map[string]interface{}{})
for _, name := range data {
//這邊應該要做確認Key是否存在?
//否則會update掉???
datalist[0][name] = true
}
fmt.Println(datalist)
}
golang很多觀念我不懂,只是湊出了要的結果
不過我目前還沒有要深入研究的打算...
看不太懂問題 你的問題是如何在 interface 增加新的鍵值嗎
還有你的 demo 是 hello world
listennn08
不知道為什麼
那個demo好像只有我能看到
已經改貼程式碼了
另外解決方法也有了~
還是謝謝你想為我解答的心意~
問題還真的是這樣 XD