gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/array2d/array2d.go (about)

     1  package array2d
     2  
     3  type Array2D struct {
     4  	data   []int
     5  	width  int
     6  	height int
     7  	length int
     8  }
     9  
    10  func NewArray2D(width int, height int, defaultValue int) *Array2D {
    11  	var a = &Array2D{
    12  		width:  width,
    13  		height: height,
    14  	}
    15  
    16  	var l = width * height
    17  	a.length = l
    18  	a.data = make([]int, l)
    19  	if defaultValue != 0 {
    20  		for i := 0; i < l; i++ {
    21  			a.data[i] = defaultValue
    22  		}
    23  	}
    24  
    25  	return a
    26  }
    27  
    28  func (a2d *Array2D) GetData() []int {
    29  	return a2d.data
    30  }
    31  
    32  func (a2d *Array2D) GetIndex(col int, row int) int {
    33  	return row*a2d.width + col
    34  }
    35  
    36  func (a2d *Array2D) GetValueByIndex(index int) int {
    37  	if index > a2d.length {
    38  		return 0
    39  	}
    40  
    41  	return a2d.data[index]
    42  }
    43  
    44  func (a2d *Array2D) SetValue(col int, row int, value int) {
    45  	var index = a2d.GetIndex(col, row)
    46  	if index > a2d.length {
    47  		return
    48  	}
    49  
    50  	a2d.data[index] = value
    51  }
    52  
    53  func (a2d *Array2D) GetValue(col int, row int) int {
    54  	var index = a2d.GetIndex(col, row)
    55  	if index < 0 {
    56  		return 0
    57  	}
    58  	if index >= a2d.length {
    59  		return 0
    60  	}
    61  
    62  	return a2d.data[index]
    63  }