【问题标题】:Go function with matrix interface as parameter以矩阵接口为参数的 Go 函数
【发布时间】:2018-08-05 00:48:09
【问题描述】:

我不知道如何将接口用作函数的参数,我不断收到语法错误:

syntax error: unexpected comma, expecting {

但它看起来与任何其他功能相同:

func getWall(array [][]interface, wallSize float64){
  var currentWall, highWallPrice float64 = 0, 0;
  err := false
  i := 0
  for highWall < wallSize {
    if i >= (len(array)) {
      fmt.Println("Not enough offers for pair " + pair)
      currentWall = wallSize
      err = true
    }else{
      price = getFloat(array[i][0].(string))
      amount = getFloat(array[i][1].(string))
      currentWall = currentWall + price * amount
       i++
    }
  }
  if !fail {
    wallPrice = getFloat(array[i][0].(string))
  }
  return wallPrice, err
}

我开始学习 golang,感谢任何帮助。

【问题讨论】:

    标签: function go matrix interface


    【解决方案1】:

    错误来自func getWall(array [][]interface, wallSize float64){,因为您的参数需要看起来像这样[][]interface{}

    【讨论】:

    • 那是正确的,非常感谢,你能链接任何资源来解释它为什么需要它吗?
    • 我不认为它有任何资源,但解释为什么你需要它,因为接口是保留字,所以 golang 编译器需要知道你期望接口类型而不是声明一个总是需要这样做,例如在声明var someInterface interface{} 时,您还需要用括号进行初始化,这就是我的理解
    • @EnriqueAlcazar interface 没有{ ... } 不是类型,就像struct 没有{ ... } 不是类型一样,它们只是关键字。在这两种情况下,{} 表示 empty,即:interface{} 是一个空接口,表示没有方法的接口;而struct{} 是一个空结构,这意味着一个没有字段的结构......这些是有效类型,但关键字本身不是类型。
    猜你喜欢
    • 2013-12-17
    • 2023-03-21
    • 1970-01-01
    • 2021-06-11
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多