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 }