Go语言学弟Day4

First:工作总结

  • django request.data.get与request.query_params.get——前者通过POST传参,后者则是通过url传参,POST请求两者都可用,GET请求只能用后者拿到数据
  • value与value_list:value返回一个字典,value_list返回一个元祖结果集。

Second:Go语言学习

defer函数,用于方法执行后最后执行语句,类似于Python中的finally,在go中不仅用于异常处理,还用于程序最后的释放文件、释放锁等操作。

panic,中断程序并抖出异常,类似Python的raise,与defer搭配使用。

func Clear() {
	fmt.Println("Clear resources.") // 定义一个函数
}

func TestDefer(t *testing.T) {
	defer Clear()    // 使用defer调用函数
	fmt.Println("Start")    // 打印一行文字
	panic("error")    // 使用panic抖出异常
	// fmt.Println("End")    

"""
返回结果必然是一个报错,因为有panic的存在,期中的区别在于"Start"输出会优先输出,因为defer的存在,Clear()方法仍会在报错前执行,但是由于"End"输出在panic之后,由于程序已经报错,故不会执行
"""

Third:Go语言中的面向对象

官方表述:既是又不完全是,首先一点就是Go语言并不支持继承。

实例前面加上”&“,会将实例类型变为指针类型

方法调用不同,实例调用出来的结果会产生一个新的内存或者说复制一份新值,而指针调用的结果则是原地址调用——new!

// 结构体定义

type Employee struct {
    Id string
    Name string
    Age Int
}

// 创建实例及初始化

func TestCreateEmployeeObj(t *testing.T) {
	e := Employee{"0", "Thermite", 20}
	e1 := Employee{Name: "Ash", Age: 18}
	e2 := new(Employee)
	e2.Id = "3"
	e2.Age = 30
	e2.Name = "Thatchar"
	t.Log(e)
	t.Log(e1)
	t.Log(e1.Id)
	t.Log(e2)
	t.Logf("e is %T", e)
	t.Logf("e2 is %T", e2) // %T 为类型的占位符
}

"""
=== RUN   TestCreateEmployeeObj
    encap_test.go:18: {0 Thermite 20}
    encap_test.go:19: { Ash 18}
    encap_test.go:20: 
    encap_test.go:21: &{3 Thatchar 30}
    encap_test.go:22: e is encap.Employee
    encap_test.go:23: e2 is *encap.Employee
--- PASS: TestCreateEmployeeObj (0.00s)

"""

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值