一直都知道golang的反射语法,但是对于什么场景下使用reflect反射没有概念,肝了两个晚上,整理了下用到过的场景: 1、框架接口的入参。 2、基类寻找子类的类型,并调用其变量、方法。 下面代码,包含了常见reflect的使用场景: 1 package reflect 2 3 import ( ...
分类:
其他好文 时间:
2020-11-02 10:50:37
阅读次数:
46
我们之前学习了协程和信道,里面有很多例子,当时为了保证main goroutine在所有的goroutine都执行完毕后在退出,我们使用了time.Sleep这种方式 由于写的demo都是很简单的,sleep个1秒,我们感觉应该是够用的 但是在实际开发中,我们无法预知,所有的goroutine需要多 ...
分类:
编程语言 时间:
2020-10-31 01:36:50
阅读次数:
19
<script>标签属性 async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或当代加载其他脚本。只对外部脚本文件有效。 defer:可选。表示脚本可以延迟到文档完全解析和显示之后再执行。只对外部脚本文件有效。 在使用<script>嵌入JavaScript代码时,记 ...
分类:
编程语言 时间:
2020-08-10 13:19:10
阅读次数:
68
遇到经典问题 func mian() { resslice := []int{1, 2, 3, 4} for _, v := range resslice { fmt.Println(v) defer fun1(v) } } func fun1(value int) { fmt.Println(va ...
分类:
其他好文 时间:
2020-07-21 13:42:40
阅读次数:
52
3.网络编程 3.1.TCP编程 server package main import ( "bufio" "fmt" "net" ) func process(conn net.Conn) { defer conn.Close() for { // 接收数据 reader := bufio.New ...
分类:
编程语言 时间:
2020-07-19 23:42:31
阅读次数:
84
defer是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。浏览器渲染页面,读取到包含defer属性的外部<script>标签时不会停止DOM渲染,而是异步下载,加载完整个页面再运行js。有多个defer的标签时,会按照顺序下载执行。 async浏览器立即异步 ...
分类:
编程语言 时间:
2020-07-14 18:24:19
阅读次数:
82
file ,err :=os.Open("d:\\aaa.txt") // 打开文件句柄 if err!=nil{ fmt.Println("打开文件出错") }else { fmt.Println("文件存在") } read := bufio.NewReader(file) // 创建文件读取对 ...
分类:
其他好文 时间:
2020-07-13 13:26:03
阅读次数:
97
引言 最近自己在学习go项目的时候,查看别人的源码经常发现defer的使用,加上自己之前对这个关键字没怎么在意,只知道差不多是用来释放内部变量的。 查看资料可以发现,defer会在当前函数或者方法返回之前执行传入的函数,经常用于关闭文件描述符、关闭数据库连接以及解锁资源。 为了能够更形象地理解def ...
分类:
其他好文 时间:
2020-07-12 18:26:31
阅读次数:
71
package main import ( "fmt" ) func main() { a := 1 b := 2 defer func() { err := recover() //recover只能放在defer之后使用 fmt.Println(err) }() //匿名函数 swap(a, b ...
分类:
其他好文 时间:
2020-07-12 01:17:27
阅读次数:
88
当程序出现异常时,会抛出一个panic来终止程序,如果不想让程序终止,可以通过defer recover() 来处理,见下图(这样处理就不会使程序崩溃): ...
分类:
其他好文 时间:
2020-07-11 13:14:10
阅读次数:
59