notas de estudio de desarrollo básico Go (17) - Matriz

arrays de C y array similares, es una rebanada única en rodajas

colección

  1. array Golang como un tipo de valor se define como sigue:

var intArray [3] int // definir una matriz de enteros, que comprende tres elementos, en el que el subíndice 0,1,2
var flArray [. 3] // definir una matriz float64 float64, que comprende tres elementos, los valores iniciales se es 0
var intArray [. 3] = int [. 3] int {10,20,30} // definir una matriz de enteros, que comprende tres elementos y cesionarios
var intArray [3] string = [ 3] string { "Kobe", " Durant "" James "} // definición de una matriz de cadenas y asignar
var intArray = cadena 0 {string [3]. [3.]:" Kobe ": 2:" Durant ":. 1:" James "} // definición de una matriz de cadena y asignados subíndices indican por lo que corresponde a un valor

intArray var [. 3] int
intArray [0] = 10
intArray [. 1] = 20 es
intArray [2] // = 30 o así asignado
arr var [] int // !!! esto no es una matriz, una rebanada de la rebanada
var intArray1 = [ ...] int {10,20,30} // dejar que el sistema lo reconoce, con parámetros de función args ... como, tres puntos esenciales

  1. Abrir dirección en una matriz de memoria espacio contiguo juntos, cada elemento del espacio de memoria específica de los datos determina, la dirección de una matriz es la matriz a [0] es
    y intArray [0] == y intArray

  2. Matriz de recorrido: para-rango de recorrido de estructura
    para _, valor: = cubre la intArray {...} // recorrer una matriz tal que cada elemento

  3. Matriz es una combinación de una pluralidad del mismo tipo de datos, la longitud de una vez la declaración es fijo y no puede cambiar dinámicamente

  4. Array [] xx, xx es un tipo de valor puede ser también un tipo de referencia, pero la atención debe ser coherente con los tipos de datos, tipos de datos no puede ser diferente de la composición de la matriz, es decir, no se pueden mezclar

  5. El valor por defecto de la matriz: int 0; cadena ""; falsa bool

  6. Para utilizar un conjunto de:
    (1) declarar una variable de matriz y ampliar el espacio en memoria contigua
    (2) para la asignación de matrices
    (3) utilizando una matriz

  7. índice de la matriz comienza a partir de 0, el mosto subíndice [foo] xx foo-1 número, se utiliza si los límites de pánico (índice fuera de rango)

  8. Una matriz es parte de un tipo de valor, se pasa a valor predeterminado, por lo que el valor se copiará entre la matriz no se afectan entre sí, llamando variable de matriz para modificar el valor de un elemento variable en la matriz no afectará a la variable de matriz original

  9. Si desea modificar las variables de matriz de la función llamada, entonces impartir directamente variable de matriz puntero de función se llama, modificando el * (matriz) [0] = xx variable de matriz cambió de una manera

  10. Go es una parte de la longitud del tipo de matriz, si una función como un parámetro variable de matriz receptora, entonces los parámetros reales y parámetro debe ser de longitud coherente de la matriz, es decir, [n] int n debe esperar en largas

Caso gama

Caso I: Crear un tipo array de bytes de 26 letras, colocado AZ respectivamente, utilizar un bucle de acceso y son imprimibles.

package main
import "fmt"
func main() {
	var myChars [26]byte
	for i := 0 ; i <= 25 ; i++ {
		myChars[i] = 'A' + byte(i)
	}
	for i := 0 ; i<= 25 ; i++ {
	fmt.Printf("%c",myChars)
	}
}

Caso II: un array buscar el número máximo y el subíndice

package main

import "fmt"

func main() {
	/*
	思路:一个数组中假设array[0]为最大,下标即为0,初始化变量值;
	      这时从数组中第二个数,也就是下标为1的数开始,for循环逐一比较,凡是比0大,那么我就直接修改初始值为当前下标和对应的值
	 */
	var array = [...]int{10,20,-1,90,220}
	maxValue := array[0]
	maxIndex := 0

	for i :=1 ; i < len(array) ; i++ {
		if maxValue < array[i] {
			maxValue = array[i]
			maxIndex = i
		}
	}
	fmt.Printf("最大值的下标为%v,最大值为%v",maxIndex,maxValue)
}

Caso 3: una solicitud y los valores en una matriz, y un valor medio, para-gama

package main

import "fmt"

func main() {
	/*
		只要要把遍历的数组中的值做一个累加即可
	*/
	var array = [...]int{10,20,-1,90,220}
	sum := 0
	for _ , value := range array {
		sum += value
	}
	fmt.Printf("和为%v\n",sum)
	fmt.Printf("平均数为%v\n",float64(sum) / float64(len(array)))  // 凡是涉及到平均值包含小数的情况,最后一定要保证除数和被除数都是一个数据类型
}

Caso cuatro: generación de números aleatorios cinco, e impresión inversa

package main
import (
	"fmt"
	"math/rand"
	"time"
)
func main() {
	/*
	生成五个随机数需要使用rand.intn()函数,但由于存在seed不变情况,所以需要使用时间函数来使seed随时在变化,保证随机数每次不一致
	 */
	var intArray [5]int
	//记得seed变化一定是纳秒最好,因为秒有些时候因为操作在1秒内,完全有可能一致,所以Unix()不推荐
	rand.Seed(time.Now().UnixNano())
	for i := 0 ; i < len(intArray) ; i++ {
		intArray[i] = rand.Intn(100)
	}
	fmt.Println(intArray)

	/*
	交换次数: len(intArray) / 2  无论奇数还是偶数,因为整数的除法是取模
	 */
	temp := 0
	for i := 0 ; i < len(intArray) / 2 ; i++ {
		temp = intArray[len(intArray) - 1 - i]
		intArray[len(intArray) - 1 - i] = intArray[i]
		intArray[i] = temp
	}
	fmt.Println(intArray)
}
Publicado 50 artículos originales · alabanza ganado 18 · vistas 4012

Supongo que te gusta

Origin blog.csdn.net/weixin_41047549/article/details/89819944
Recomendado
Clasificación