假设我正在编写一个扫雷游戏,并且有一个结构可以容纳游戏场,该场包含带有地雷的2D数组。假设我想用一些地雷将其初始化。有没有办法说gameField GameField = new(GameField, 30),类似于我在Java中会做的事情?

这是一些代码来说明我的观点:

type GameField struct {
  field [20][20] int
}

func (this *GameField) scatterMines(numberOfMines int) { //some logic to place the numberOfMines mines randomly }


我想要的是调用一个初始化程序,并自动执行scatterMines func。

最佳答案

我在Go结构中看到的模式是对应的NewXxx方法(例如image pkg):

type GameField struct {
  field [20][20] int
}

func NewGameField(numberOfMines int) *GameField {
  g := new(GameField)
  //some logic to place the numberOfMines mines randomly
  //...
  return g
}

func main() {
    g := NewGameField(30)
    //...
}

10-08 01:34