golang学习笔记04

数组

var hens [6]float64
命名格式: var 数组名 [大小]类型
数组名的地址就是数组的地址就是数组首元素的地址

初始化数组方式:

var numArr = [3]int{1,2,3}
var numArr01 = [...]int{1,2,3,4}
var strArr = [...]string{1:"tom",2:"ok~"}
var hens [3]string = [3]string{ , , } 

数组的遍历

for - range

for index,value := range arrge01{
    //其中的index和value是不固定的,可以自己命名
}

说明:

  1. 第一个返回值index是数组arrge01的下标
  2. 第二个value是在该index的下标的数值
  3. index与value都是局部变量
  4. 假如不需要下标可以用“_”忽略

注意事项和细节说明:

  1. var arr []int 这时的arr表示的是一个切片
  2. 数组钟的元素可以是任何数据类型包括值类型和引用类型,但是不能混用
  3. golang中数组属于值类型,在默认的情况下是发生值传递
  4. 长度是数组的一部分,在传递函数参数时,余姚考虑数组的长度
    练习:
    1.打印A~Z
func main(){
   //1.打印A~Z
   var strnum [26]byte
   for i:=0;i<26;i++{
   	strnum[i] = 'A' + byte(i)
   }
   for i:=0;i<26;i++{
   	fmt.Printf("%c ",strnum[i])
   }

2.输出数组中最大的值和最大的值下标:

   var numbers = [...]int{2,34,46,234,57,21,3,46,24}
   var maxvalue int =numbers[0]
   var maxindex int = 0
   for i:=1;i<len(numbers);i++{
   	if numbers[i] > maxvalue{
   		maxvalue = numbers[i]
   		maxindex = i
   	}
   }
   fmt.Printf("maxvalue = %d maxindex = %d",maxvalue,maxindex)

3.输出一个数组的和与它的平均值:

var numbers01 = [...]int{2,34,46,234,57,21,3,46,24}
	var sum int
	for _,value := range numbers01{
		sum +=value
	}
	fmt.Printf("数组和为 %d 数组平均值为 %0.1f",
	sum,float64(sum) / float64(len(numbers01)))

数组反转:

这里涉及到一个随机变量的生成:

  1. 生成五个随机数:
    rand.Intn()
  2. 将五个随机数放入到数组中
  3. 将数字倒换:
package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main(){
	//数组反转
	rand.Seed(time.Now().UnixNano())//种一个时间种子
	var arr01 [7]int//定义数组 
	for i:=0;i<len(arr01);i++{
		arr01[i] = rand.Intn(100)//rand.Intn(100)在0~100内(不等于100)内随机取值
	}
	fmt.Println("前 :",arr01)
	len := len(arr01)
	for i:=0;i<len / 2;i++{
		var tem int = 0
		tem =arr01[i]
		arr01[i] = arr01[len-1-i]
		arr01[len-1-i] = tem
	}
	fmt.Println("后 :",arr01)
	//对就是这样子的欧克~
}

切片:

基本介绍:

  • 切片的英文是slice
  • 切片是数组的引用,因此slice是引用类型
  • slice和数组相识,遍历slice、访问slice元素、以及长度len(slice)都是一样
  • slice的长度是动态变化的,因此切片是一个动态数组
  • 基本语法
    var 变量名 []数据类型
    ex: var arr []int

切片的基本使用

 var intArr [5]int = {11,22,33,44,55}
 //定义:
 slice := intArr[1:3]
    /*slice是切片名
         intArr[1:3]表示的是引用下标为1值到3(不等于三) */

切片在内存中的存在形式:

  1. slice是引用类型
  2. slice 从底层来说是一个结构体:
type slice struct{
    ptr *[2]int
    len int 
    cap int
}

切片的使用:

  • 定义一个数组,再通过引用创建好的数组

  • 运用make来创造切片:

   var 变量名 []type = make([]type,len,cap)
   //通过make方式创建的切片数组为make底层维护,外界是不可看的
   
  • 定义一个切片,直接指定具体数组
    var strslice []string = []string{"tom","jeck","mary"}

切片遍历与数组相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值