首页 > 其他分享 >GO八股

GO八股

时间:2023-08-09 22:01:43浏览次数:31  
标签:八股 nil goroutine flag 参数 context GO 解析

Go股大全:

  1. flag库了解吗?有什么陷阱?

flag是Go官方提供的标准库,flag包实现了命令行的解析,flag使得开发命令行工具更为简单;

陷阱一:

当我们把flag放置在cli应用的最后面时,需要小心参数传递的顺序,flag包的命令行参数的解析逻辑是:当碰到第一个非flag参数时,便停止解析,所以如果传入非法参数就导致后面的参数解析错误:

陷阱二:

对于bool类型的flag参数,只支持以下两种形式:

-arg

-arg=value

其他形式都会导致解析失败;

  1. Go语言中的nil是什么:

nil不是关键字,是一个预先声明的标识符,指针,通道,函数,接口,map,切片的零值就是nil.

nil是没有默认类型的,他的类型具有不确定性,我们在使用它时必须要提供足够的信息能够让编译器推断nil期望的类型;

两个nil不能进行比较,因为nil是无类型的;

  1. 声明一个nil的map,map可以读数据,但是不能写数据
  2. 关闭一个nil的channel回引发panic
  3. nil切片不能进行索引访问,会引发panic
  4. 方法接受者为nil时,如果在方法内使用到了会引发panic
  5. 空指针一个没有任何值的指针
  6. context了解吗?

context包是在1.7版本引入的,context可以用在goroutine之间传递上下文信息,相同的context可以传递给运行在不同goroutine中的函数,上下文对于多个goroutine同时使用是安全的,context官方建议被当作第一个参数,并且不断透传下去,context可以使用background,TODO创建一个上下文,在函数调用链之间传播context,也可以使用withDeadline,withCancel或withValue创建的修改副本替换他,总结:context的作用就是在不同的goroutine之间同步请求特定数据,取消信号以及处理请求的截至日期.

我们常用的一些库都支持context,例如gin,database/sql等库都是支持context的,这样更方便我们做并发控制

标签:八股,nil,goroutine,flag,参数,context,GO,解析
From: https://blog.51cto.com/Siri/7026164

相关文章

  • Godot无法响应鼠标点击等输入事件时,检查这些内容
    注:本文以Godot4.0为基准,可能其他版本也能参考。这是我用C#写项目时发现的,可能和gdscript使用者遇到的问题有一定区别。如果你用Godot制作的游戏无法响应鼠标点击等输入事件,请检查下面这几种可能性,说不定能解决你的问题:1绑定gui_input信号的节点是否是Control?绑定p......
  • vue+django跨域问题
    解决办法:MIDDLEWARE=['corsheaders.middleware.CorsMiddleware','yshop.middleware.AuthorizeMiddleware','django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware�......
  • Python基础day63 Django分页和cookie、session
    推导分页的原理分页:当我们要展示的数据特别多的时候,一页展示不完,这个时候我们需要把要展示的数据分成多页展示分页中需要的几个参数:1.总数据有多少条2.每页展示多少条数据(自己规定的20)3.一共展示多少页4.总页数=总数据量/每页展示多少条数据5.当前第几页(前端传过去......
  • study go of First day
    一、语言标准1、go语言标识符基本和c语言规则一致:1).由数字、字母、下划线(_)组成2).数字不能在开头3).区分大小写————————————————————————————————————————————————————————————————————————————......
  • 简易的学生管理系统(go语言)
    简易的学生管理系统(go语言)首先,你需要安装github.com/go-sql-driver/mysql这个包来操作MySQL数据库。你可以使用以下命令来安装它:gogetgithub.com/go-sql-driver/mysqlpackagemainimport( "database/sql" "fmt" "os" "bufio" "strings" _"......
  • 使用golang解决LeetCode热题Hot100(1-10)
    使用golang解决LeetCode热题Hot1001.两数之和https://leetcode.cn/problems/two-sum/题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个......
  • Go语言——函数与闭包
    1函数定义在Go语言中定义函数使用func关键字,格式如下func函数名(参数)(返回值){ 函数体}函数名:由字母、数字、下划线组成。但首字母不能为数字,同一个包下,函数名称也不能重复参数:名称和类型组成,多个参数之间使用,分隔返回值:由返回值名称和返回值类型组成,返回值名称可以......
  • Django REST framework
    简介在Django框架基础之上,进行二次开发用于构建RestfulAPI简称为DRF框架或RESTframework 特性提供了强大的Serialize序列化器,可以高效进行序列化与反序列化操作提供了极为丰富的类视图、Mixin扩张类、ViewSet视图集提供了直观的We......
  • JMeter有对手了?RunnerGo这些功能真不错!
    当谈到对于性能测试的需求时,JMeter和RunnerGo在测试场景设置、执行性能测试、性能测试结果分析等方面都提供了很多功能,但两个工具仍然存在一些区别。以下是详细的比较分析:层次分明的模块化设计告别文件管理混乱:JMeter的设计倾向于单体结构,即将所有测试元素组合在一个文件中,一个文件......
  • JMeter有对手了?RunnerGo这些功能真不错!
    当谈到对于性能测试的需求时,JMeter和RunnerGo在测试场景设置、执行性能测试、性能测试结果分析等方面都提供了很多功能,但两个工具仍然存在一些区别。以下是详细的比较分析:层次分明的模块化设计告别文件管理混乱:JMeter的设计倾向于单体结构,即将所有测试元素组合在一个文件中,一个......