Pra*_*dam 6 go multidimensional-array
我是Gobie的新手,我在python中有Tuple列表,如下所示:
data = [
(435347,'cat'),
(435347,'feline'),
(435347,'lion'),
(6765756,'dog'),
(6765756,'hound'),
(6765756,'puppy'),
(435347,'kitten'),
(987977,'frog')
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能将数据转换成GO等价物,我用Google搜索了它,但是他们用相同的数据类型的多维数组指定了它,如下所示,
int_list := [4][2]int{{1, 0}, {2, 0}, {3, 0}, {4, 0}}
string_list := make([][]string, 0)
a := [1][2]string{{"lion","dog"}}
Run Code Online (Sandbox Code Playgroud)
帮帮我..!
更新:
对于数组的混合类型集合:
array := []interface{}{1, "dog", "lion", 12, 45.09, true, false}
Run Code Online (Sandbox Code Playgroud)
这里有两种可能的解决方案:混合数据类型的实际多维数组(你似乎要求的)和结构数组(你可能想要的).
如果你真的想要做混合类型的多维数组,你需要使用接口:
interfaceArray := [2][2]interface{}{{1,"dog"},{2,"cat"}}
fmt.Println(interfaceArray)
Run Code Online (Sandbox Code Playgroud)
输出:
[[1只狗] [2只猫]]
接口必须小心处理,因为它们可以......任何东西.这意味着没有强制执行第一个参数是int,第二个参数是字符串.我可以轻松添加{"lion", 3}并且编译器会很高兴,但如果它不首先检查类型,程序将崩溃.
您可以在接口上键入转换和断言,以确保正确的数据类型.
将python元组放在列表中并不会使它成为一个多维数组.Go中最接近的等价物是一系列结构.
type animal struct {
id int
name string
}
animalList := [2]animal{{1, "cat"}, {2, "dog"}}
fmt.Println(animalList)
Run Code Online (Sandbox Code Playgroud)
输出:
[{1 cat} {2 dog}]
在这种情况下,类型是明确定义的,我不能存储{"lion", 3}在数组中.
最后注释:[size]type定义一个数组.[]type定义切片.我在这里使用数组,因为这是你在问题中提到的,但切片就像(或可能更多)适当一样.
您无法使用两种不同的类型创建多维数组.更好地使用结构.希望这将有助于您的目的.
package main
import "fmt"
type Data struct {
i int
s string
}
func main() {
data := []Data{
{435347,"cat"},
{435347,"feline"},
{435347,"lion"},
}
fmt.Println(data)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1905 次 |
| 最近记录: |