Golang中new&make&错误处理

package main

import "fmt"

func main() {
	num1 := 100
	// 类型:int 值:100 指针:0xc00000a098
	fmt.Printf("类型:%T 值:%v 指针:%v \n", num1, num1, &num1)

	// num2 为指针类型
	num2 := new(int)
	// 类型:*int 值:0xc00000a0d0 指针:0xc000006030 指向的值:0
	fmt.Printf("类型:%T 值:%v 指针:%v 指向的值:%v \n", num2, num2, &num2, *num2)
	*num2 = 100
	// 类型:*int 值:0xc00000a0d0 指针:0xc000006030 指向的值:100
	fmt.Printf("类型:%T 值:%v 指针:%v 指向的值:%v \n", num2, num2, &num2, *num2)

	// make用来给引用类型分配内存 channel map slice
	str1 := make([]string, 5)
	fmt.Println(str1) // [    ]
	// 长度5 容量10
	str1 = make([]string, 5, 10)
	fmt.Println(str1)      // [    ]
	fmt.Println(cap(str1)) // 10
	fmt.Println(len(str1)) // 5

	// 初始化slice
	slice1 := make([]int, 5)
	fmt.Println(slice1)        // [0 0 0 0 0]
	fmt.Printf("%p\n", slice1) // 0xc0000c0060

	// 初始化map
	m1 := make(map[string]int)
	m2 := make(map[string]int, 2)
	fmt.Println(m1, len(m1)) //map[] 0
	fmt.Println(m2, len(m2)) //map[] 0

	fmt.Println("测试异常机制...")

	fmt.Println("before testError...")
	testError()
	fmt.Println("after testError...")
}

func testError() {
	defer func() {
		err := recover() // 内置函数,可以捕获异常
		if err != nil {
			fmt.Println("err:", err)
			fmt.Println("发生异常............")
		}
	}()
	num1 := 10
	num2 := 0
	fmt.Println(num1 / num2)
}
类型:int 值:100 指针:0xc00000a098 
类型:*int 值:0xc00000a0d0 指针:0xc000006030 指向的值:0 
类型:*int 值:0xc00000a0d0 指针:0xc000006030 指向的值:100 
[    ]
[    ]
10
5
[0 0 0 0 0]
0xc00000c390
map[] 0
map[] 0
测试异常机制...
before testError...
err: runtime error: integer divide by zero
发生异常............
after testError...

Process finished with the exit code 0

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值