Navigation
阅读进度0%
No headings found.

Go 数组基础:使用、多维数组与函数传递

June 17, 2025 (7mo ago)

Go
Array
Function

章节概述如下

本章节主要讲的内容是关于数组的 ,其主要内容如下

  1. 基础的使用
  2. 多维数组的使用
  3. 给函数传递 数组的问题
  4. 关于进度的问题

基础的使用

// simple use
func  useArray()  {
	//  1. 定义 var variable_name [SIZE] variable_type 一维数组的定义方式
	//  顶一个一个非常简单的数组
	var balance= [5]int{1,2,3,4,5}
	var balance2 = [...]int{1,2,3,4,5}  // 自动的给你计算出其数组的长度
	var arr1 := [3]int // 初始化一个空的[0,0,0] // 默认值旧是0
 
	fmt.Printf("balance ===> %d\n", balance)
	fmt.Printf("balance2 ===> %d\n", balance2)
	var tesetArray  [10]int 
	var i ,j int 	
	// 2  赋值
	for i = 0; i<10; i++ {
		tesetArray[i]=i
	}
	// 3. 访问
	for j = 0 ;j<10; j++ {
		fmt.Printf("Element[%d] = %d\n", j, tesetArray[j] )
	} 
	
	// 4. 遍历方式
	for idx, e := range balance {
		fmt.Println(idx,e)
	}
 
	// 5 数组的截取 标准语法 array[开始的索引,结束的索引(不包含)]
	balance[1:2]  // 2 
	balance[1:3]  // 2 3 
	balance[1:]  // 一直到末尾
	balance[:3]  // 从开始到索引位置为3的地方
}

多维数组的使用

 
// 多维数组的问题
func duowei()  {
	// var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type 这个就是语法的形式
	// golang中使用类似表格的结构来保存数据 会比较好理解
	 /* 数组 - 5 行 2 列  以下就是一个二维数组*/
   var a = [5][2]int{ {0,0}, {1,2}, {2,4}, {3,6},{4,8}}
   var i, j int
 
   /* 输出数组元素 */
   for  i = 0; i < 5; i++ {
      for j = 0; j < 2; j++ {
         fmt.Printf("a[%d][%d] = %d\n", i,j, a[i][j] )
      }
   }
 
}

给函数传递 数组的问题

 
// 给函数传递数组的问题 
// 如果你想向函数传递数组参数,你需要在函数定义时,声明形参为数组,我们可以通过以下两种方式来声明
func functionArray()  {
	// 如果函数要接受数组有两种方式来做
	// 在函数的形参中定义array的大小 还有一种是不定大小的
	/*
	void myFunction(param [10]int) 
	void myFunction(param []int)
	*/
 
	  /* 数组长度为 5 */
		var  balance = [5]int {1000, 2, 3, 17, 50}
		var avg float32
 
		/* 数组作为参数传递给函数 */
		avg = getAverage( balance, 5 )
 
		/* 输出返回的平均值 */
		fmt.Printf( "平均值为: %f ", avg )
}
 
// 以下的实例 就是在基计算平均值
func  getAverage(arr []int ,size int) float32 {
	var i int
	var avg, sum float32  
 
	for i = 0; i < size; ++i {
		 sum += arr[i]
	}
 
	avg = sum / size
	return avg
}

关于精度的问题

 
//  有关于精度的问题 说白go了旧放大然后除法一下
func  jindu()  {
	a := 1690           // 表示1.69
	b := 1700           // 表示1.70
	c := a * b          // 结果应该是2873000表示 2.873
	fmt.Println(c)      // 内部编码
	fmt.Println(float64(c) / 1000000) // 显示
}