dongzhi2014 2012-04-01 11:49
浏览 35
已采纳

开始,初始化自定义类型

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.

  • 写回答

2条回答 默认 最新

  • dongtanghuan1885 2012-04-01 14:50
    关注

    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)
        //...
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?