Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Go, init custom type

Suppose, I am writing a minesweeper game, and i have a struct to hold the game field, that contains a 2D array with mines. Suppose, i want to initialize it with some mines. Is there a way to say gameField GameField = new(GameField, 30), similar to what i'd do in java?

Here is some code to illustrate my point:

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

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

What i want is to call an initializer and have that scatterMines func executed automatically.

like image 759
Ibolit Avatar asked Jul 10 '26 13:07

Ibolit


1 Answers

A pattern I've seen in Go structs is a corresponding NewXxx method (e.g., 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)
    //...
}
like image 52
hyperslug Avatar answered Jul 15 '26 16:07

hyperslug



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!