英文:
Do Arrays function the same way in Go as they do in Ruby or Python?
问题
在Go语言中,数组是一种固定长度的数据结构,它只能容纳相同类型的元素。因此,Go语言中的数组不能同时容纳整数和字符串,与Python和Ruby不同。如果你需要在Go语言中存储不同类型的元素,可以使用切片(slice)或者结构体(struct)来代替数组。
英文:
In Ruby an array can hold a string or an integer, the same seems true in Javascript and python. But in Go, putting integers and strings together seems difficult, or at least i couldn't figure it out. Is an array able to take both integers and strings within Go in the same way that Python and Ruby can?
Ruby:
a = [20, "tim"]
puts a
Python:
a = [20, "tim"]
print(a)
Go:
?
答案1
得分: 1
因为Go是一种类型化的语言,要在Go中创建一个包含多种类型的切片,你需要指定一个可以满足多种类型的类型。在Go中,可以通过创建一个空接口(interface{}
)的切片来实现:
a := []interface{}{20, "tim"}
fmt.Println(a)
这样做的原因是空接口是一个没有方法的接口,所以所有类型都可以匹配它。
在Go中,通常不会创建包含不同类型的切片或数组,但如果确实需要这样做,可以使用上述方法。
你可以在以下链接中了解更多关于接口的内容:
英文:
Because Go is a typed language, to create a slice of multiple types in Go, you need to specify a type that multiple types can satisfy. To do this in Go, create a slice of the empty interface (interface{}
) such as the following:
a := []interface{}{20, "tim"}
fmt.Println(a)
This works because the empty interface is an interface with no methods so all types will match it.
Creating a slice or array of mixed types isn't generally done in Go but this is the way to do it if you need it.
You can read more about interfaces here:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论