构建包含不同类型的数组

huangapple go评论73阅读模式
英文:

Build array with different types

问题

可以构建包含不同类型的数组。例如:

[1, 2, "apple", true]
英文:

Can I build array what includes different types? For example:

[1, 2, "apple", true]

答案1

得分: 24

你可以通过创建一个interface{}类型的切片来实现这个。例如:

func main() {
    arr := []interface{}{1, 2, "apple", true}
    fmt.Println(arr)
    
    // 但是,现在你需要使用类型断言来访问元素
    i := arr[0].(int)
    fmt.Printf("i: %d, i type: %T\n", i, i)
    
    s := arr[2].(string)
    fmt.Printf("b: %s, i type: %T\n", s, s)
}

这里可以了解更多信息。

英文:

You can do this by making a slice of interface{} type. For example:

func main() {
	arr := []interface{}{1, 2, "apple", true}
	fmt.Println(arr)
	
	// however, now you need to use type assertion access elements
	i := arr[0].(int)
	fmt.Printf("i: %d, i type: %T\n", i, i)
	
	s := arr[2].(string)
	fmt.Printf("b: %s, i type: %T\n", s, s)
}

Read more about this here.

答案2

得分: 3

根据情况,你可以使用struct代替:

package main
import "fmt"

type array struct {
   one, two int
   fruit string
   truth bool
}

func main() {
   arr := array{1, 2, "apple", true}
   fmt.Println(arr)
}

https://golang.org/ref/spec#Struct_types

英文:

Depending on the situation, you might be able to use a struct instead:

package main
import "fmt"

type array struct {
   one, two int
   fruit string
   truth bool
}

func main() {
   arr := array{1, 2, "apple", true}
   fmt.Println(arr)
}

<https://golang.org/ref/spec#Struct_types>

huangapple
  • 本文由 发表于 2016年9月8日 02:06:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/39376566.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定