异常处理数组
Posted 星际迷航‖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理数组相关的知识,希望对你有一定的参考价值。
前言
这里总结的Golang 笔记只适合有点编程基础的人看,比如Java
错误处理
golang之中的错误处理与Java之中异常处理有异曲同工之妙,Java之中是try…catch…finally,go语言之中defer…panic…recover。go语言之中抛出一个painc的异常,然后在defer之中通过recover捕获这个异常,然后正常处理。
错误处理demo
func main()
test()
func test()
var i = 10
var j = 0
defer func()
err := recover()
if err != nil
fmt.Println("err:", err)
()
res := i / j
fmt.Println(res)
处理结果:
自定义错误处理
painc遇见问题 painc会终止程序,你没有在程序中添加任何其他措施的话,就打印painc的详细或者内容,然后程序停止运行。但是前面无论产生什么错误都不会影响到defer的执行。
painc使用
func main()
defer func()
fmt.Println("hello1")
panic("defer panic")
fmt.Println("hello2")
()
fmt.Println("hello3")
panic("outer panic")
fmt.Println("hello4")
从如上的结果可以看出来,这里先是打印了3,在出现panic之后程序即将终止,但是会执行defer语句块,然后打印1,最后打印panic外部,最后打印了内部的panic。
自定义错误
使用error.New() 和 panic 一起实现
func main()
// painc 内置函数,接收一个interface值(任何值),可以接受error类型的变量,输出错误信息,并退出程序
err := compute(1, 2)
if err != nil
panic(err)
fmt.Println("正常执行")
func compute(i int, j int)(error error)
if i + j < 10
return errors.New("ij的值太小了")
return nil
打印出错误信息,当ij的值大于10的时候返回一个nil打印正常执行。
数组
定义
数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。Golang之中数组是一个值类型与java之中数组还是有区别,java之中是引用类型。
var 数组变量名 [元素数量]Type
数组变量名 := [...]Type元素
var 数组变量名 = [...]Type元素// 不写...就变成切片了
数组遍历
打印索引和元素
func main()
var arrs = [3]int 3, 2, 1
for index, val := range arrs
fmt.Printf("第%d个元素的值为:%d\\n", index, val)
仅打印元素
func main()
var arrs = [3]int 3, 2, 1
for i:=0; i<len(arrs); i++
fmt.Println(arrs[i])
数组基本数据类型
Java之中数组之中是引用类型,在传递过程之中拷贝了数组第一个元素的地址,然后对其数组做变更,数据会发生变化。从以下的代码可以看出golang数组和java数组的区别。
public class TestArray
public static void main(String[] args)
int[] arr = new int[6];
for(int i = 0; i < arr.length; i++)
arr[i] = i+1;
System.out.println("arr[0]: " + arr[0]);
TestArray testArray = new TestArray();
testArray.swap(arr);
System.out.println("arr[0]: " + arr[0]);
public void swap(int[] arr)
arr[0] = 0;
golang数组是基本数据类型,在进行值传递的时候,只是拷贝这个数组的值,然后修改数组,原数组中值不发生变化,是一个新的数组。
package main
import "fmt"
func main()
var arr [6]int
for i:=0;i<len(arr);i++
arr[i] = i + 1
fmt.Println()
fmt.Printf("arr[0]: %d", arr[0])
swap(arr)
fmt.Println()
fmt.Printf("arr[0]: %d", arr[0])
func swap(arr [6]int)
arr[0] = 0
从如上结果可以看出索引为0这个位置元素的值未发生变化。但是如果想要修改数组的话可以根据指针进行修改。
数组内存布局
golang一般会在栈区开辟一段连续的空间为数组的空间。
如果文章内容有错误,还请大佬们指导,防止误人子弟。继续冲冲冲!
以上是关于异常处理数组的主要内容,如果未能解决你的问题,请参考以下文章