登录 主页

go - [][]float64类型切片中为什么包含int类型

2024-02-20 06:18PM

为什么go语言声明的[]float4,但是却包含2017这样的int存在?

eg:

  "inventories" : [][]float64{
      {2003,0},
      {2004,0},
      {2005,0},
      {2006,0},
      {2007,0},
      {2008,0},
      {2009,0},
      {2010,0},
      {2011,0},
      {2012,0},
      {2013,32085.03467},
      {2014,34503.264},
      {2015,37578.56333},
      {2016,42187.296},
      {2017,44850.19033},
      {2018,51203.771},
      {2019,54335.08267},
      {2020,55402.17467},
      {2021,61777.70667},
      {2022,63011.10833},
  }  

因为对于[][]float64类型的切片,它允许包含float64类型的数组作为元素,这种情况下,每个数组的第一个元素是年份((int类型),第二个元素对应的是数值(float64类型)

在给定的代码中,尽管切片的类型声明为[][]float64,但由于切片中的每个元素都是一个包含两个元素的数组,其中第一个元素类型是 int 类型的年份,第二个元素是 float64 类型的数值 ,所以 2022 可以作为 int 类型的年份存在于切片中。

因为整数会被自动转换为浮点数类型,整数值2022被隐式地转换为浮点数2022.0,然后作为[][]float64切片的元素之一。

所以,尽管切片的类型声明是 [][]float64,但是切片中的元素并不受切片类型声明的限制,只要保证每个元素是一个包含两个元素的数组即可。

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论