(资料图片)
1. 跳出/执行下一次循环。{标签名}:for true { ... for true { ... break/continue {标签名} //默认不加标签,则跳出最近一层循环。加了标签可以跳出标签定义处所在循环 }}
2. map的使用注意项。因为map是指针,作为参数传递时,在函数内部对map作的修改直接修改外部传递变量的值。
3. slice(切片)使用注意点。与map一样,都可以用make创建,但slice返回的是结构体。当slice作为参数传递时,在函数内部修改可能会影响slice
4. 遍历循环for range和排序sort的使用。package mainimport ("fmt""sort")func main() {sl := []int{219, 373, 543, 351, 523, 625, 436, 252, 121, 567, 896, 454, 342, 734, 464, 423, 164}min, max := getMinAndMax(sl)fmt.Println("sl中最小值:", min)fmt.Println("sl中最大值:", max)sort.Ints(sl) //根据类型进行正向排序fmt.Println("切片排序获取sl中最小值:", sl[0])fmt.Println("切片排序获取sl中最大值_1:", sl[len(sl)-1:][0])sort.Sort(sort.Reverse(sort.IntSlice(sl))) //反射排序fmt.Println("切片排序获取sl中最大值_2:", sl[0])}func getMinAndMax(arr []int) (min int, max int) {if len(arr) == 0 {return }min, max = arr[0], arr[0]for _, v := range arr {if v > max {max = v} else if v < min {min = v}}return}
上面代码执行结果:
sl中最小值: 121sl中最大值: 896切片排序获取sl中最小值: 121切片排序获取sl中最大值_1: 896切片排序获取sl中最大值_2: 896
5. defer用法。defer是函数退出前必须执行逻辑,类似栈,后进先出,最后执行要先写
package mainimport ("fmt")func main() {fmt.Println("start...")for i := 0; i < 3; i++ {defer fmt.Println(i)}fmt.Println("end")}
上面代码执行结果:
start...end2 1 0
defer函数实参是值拷贝进去,所以i++不影响defer中的值。注意:return之后的defer不会执行;调用os.Exit(1)的函数不执行defer。
package mainimport ("fmt")//return后写deferfunc main() {fmt.Println("start...")returndefer fmt.Println("defer逻辑")fmt.Println("end")}//函数中使用了os.Exit(1)func main() {fmt.Println("start...")defer fmt.Println("defer逻辑")fmt.Println("end")os.Exit(1)}
6. 匿名函数用法。package mainimport ("fmt""time")var FunB = func() {fmt.Println("全局匿名函数")}func main() {fmt.Println("start...")go func() {fmt.Println("匿名函数")}()a := func() {fmt.Println("给变量赋值的匿名函数")}go a()go FunB()time.Sleep(1 * time.Second)fmt.Println("end")}
7. defer + recover捕获panic,不会让一个panic使整个app程序奔溃的简单方法,提高程序的健壮性。package mainimport "fmt"func main() {testPanic()fmt.Println("test_end")}func testPanic() {defer func() {err := recover()if err != nil {fmt.Println("panic被捕获")}}()a := 10b := 0fmt.Println("a/b=", a/b)}
8. 自定义错误。errors.New("自定义错误内容")
9. 自定义函数进行多函数单一操作。package mainimport "fmt"func add(a, b int) int {return a + b}func sub(a, b int) int {return a - b}func nul(a, b int) int {return a * b}type Op func(int, int) intfunc do(f Op, a, b int) int {return f(a, b)}func main() {c, d := 102087, 65421e := do(add, c, d)fmt.Println("c+d=", e)f := do(sub, c, d)fmt.Println("c-d=", f)g := do(nul, c, d)fmt.Println("c*d=", g)}
10. 接口的使用说明。接口是一种抽象类型,接口实现时要注意值与指针接收者的问题。在go语言中,一个类型(主要是struct)可以实现多个不同的接口,接口之间互不影响;也可以多个类型实现同一个接口,即间接实现面向对象的开发方式。go里面的接口不需要类型(对象)完全实现所有函数方法,接口可以通过在类型中嵌入其它类型来实现。还可以通过接口不断嵌套创造出新的接口。注意:go语言中有空接口概念(interface{}),即没有定义任何函数方法的接口,因此任何类型都实现了空接口,空接口类型的变量也就可以接收任意类型的变量(类似其它面向对象语言中的Object对象),用途非常广但需要断言正确,否则实现出现未知错误。
11. goroutine 并发使用。并发是指同一时间段内执行的多个任务。并行是指同一时刻执行多个任务。goroutine是go语言中并发的实现,它类似于线程,但是属于用户态的线程,由go语言运行时调度完成,不同于线程由操作系统调度完成。
...go func(){ //并发执行函数逻辑}() ...
常用sync.Wait.WaitGroup来解决多个并发中安全问题
12. 多个并发goroutine之前的通信channel应用。chan类型也和map、slice(切片)类型一样,用make创建。
-end-
标签:
-
Go语言学习总结_世界报资讯
1 跳出 执行下一次循环。```{标签名}:fortrue{ fortrue{ break
-
热推荐:江苏太仓“首富”五年上市,市值近281亿
严俊旭,湖北汉川人(也有说是广东清远人),生于1969年7月,毕业于上
-
618 高潮期攻略:小米空气炸锅 99 元手慢无,Redmi Note 12T 手机 1T 版 2279 元补货
小米空气炸锅99元手慢无,RedmiNote12T手机1T版2279元补货
-
环球要闻:刚刚,南京中考作文出炉!
南京市2023年中考今天开始啦南京市共有考生约6 6万人分散在143个考点参
-
罗普特获批设立国家博士后科研工作站|焦点热讯
据罗普特(688619)消息,近日,根据全国博士后管理委员会办公室公布的20
-
全球观速讯丨俄国防部公布视频:摧毁
俄媒:俄军击退乌军突击队袭击,使用缴获车辆摧毁乌军据点据俄罗斯卫星
-
如何避免股权转让后合同的风险
股权转让的本意,是指甲方向乙方出售部分或全部的标的公司(丙方)的股
-
信用减值损失借方表示什么_环球时讯
信用减值损失属于损益类科目,借方表示损失的增加,贷方表示损失的减少
-
记者探访“瘦身令”颁布后首个端午节市场,礼盒混装混搭再现“天价粽”
端午临近,粽子又到了销售旺季。今年是粽子产品实施包装“瘦身令”的首
-
湖北武汉举办防范非法集资宣传教育月集中宣传日活动|今日热搜
本网讯 记者吴海峰 通讯员许文琪报道 6月15日,以“守好钱袋子,
-
床垫汗渍发黄脏了怎么洗掉 ?床垫清洁有妙招
我们一生中几乎有三分之一的时间都是需要在床上度过的,不算一下,还不
-
CBC无机化工一周要闻精选(6.12-6.16)|全球热头条
哈工智能与宜丰县人民政府将在锂产业领域开展项目合作;广安市岳池县积
-
新动态:2023钻石杯青少年网球赛尚赫·重庆站圆满收官
日前,2023年钻石杯青少年网球挑战赛尚赫·重庆站的比赛落下帷幕,来自
-
暴雪将解决《暗黑破坏神4》硬核模式突然掉线的问题!
虽然《暗黑破坏神4》游戏内容不错,不过它的服务器存在一些问题,有时
-
智造预制菜|逮虾记:单厂单品造就十亿级爆款_播资讯
逮虾记走出了一条新路:2020年正式进入创业赛道,2年时间将营业额做到
-
2023年兰州市中考6月16日开考 3.9万名中考生为未来而“战”
2023年兰州市中考昨天开考3 9万名中考生为未来而战 每日甘肃网6月17
-
多重利好正在汇聚 工程机械板块6月份以来涨幅逾11% 聚焦
从市场表现看,工程机械板块6月1日至6月16日累计上涨11 46%,位居申万
-
全球观察:华擎推出AI深度学习MATX主板
一款名称为W790D8UD-1L1N2T BCM的主板型号,是华擎工作站Rack平台的最
-
天天消息!一图读懂|吃点辣的有三个超级好处
对于辣椒,有的人喜欢吃到无辣不欢,有的人则一点也享受不了敬而远之。
-
佩斯科夫:俄罗斯愿与美国就核军备控制进行谈判 前沿资讯
据央视新闻,当地时间16日,俄罗斯总统新闻秘书佩斯科夫在圣彼得堡经济
-
南村四个暖心故事,一起为人间大爱点赞吧
生活中我们会遇到各种各样的困难,但是有时候人与人之间的一点善意,就
-
6月16日基金净值:博时凤凰领航混合A最新净值0.7472,涨0.74% 观天下
6月16日,博时凤凰领航混合A最新单位净值为0 7472元,累计净值为0 7472
-
无敌版机战王下载_无敌机战私服官网
1、别去无敌机战,老实说就只有武器190这点好一点,但gm不常上还要收钱
-
什么是讲政治?_什么是讲政治
1、觉得这其中真是有学问!讲政治:它内涵非常丰富,包括政治方向、政
-
枫香重庆丰都群体家系丰17_关于枫香重庆丰都群体家系丰17概略
1、枫香重庆丰都群体家系丰17是一种金缕梅科枫香属的植物,生长在亚热
-
纳斯达克中国金龙指数跌超1%热门中概股多数转跌|世界观天下
纳斯达克中国金龙指数跌超1%热门中概股多数转跌:纳斯达克中国金龙指数
-
世界今亮点!放弃过招阿根廷,只想虐菜!4-0鱼腩,球迷质问足协:意义何在?
在一场火热的梅西中国行结束之后,国足在大连迎来了和缅甸队的热身赛,
-
热点在线丨假公安线上催促快转账 真民警争分夺秒成功帮市民止付
本报讯(记者吴涛通讯员王俐娇)近日,家住苏州高新区的武女士遭遇了“
-
金太阳实控人胡秀英拟减持不超4%股份
金太阳(300606 SZ)发布公告,公司实际控制人HUXIUYING(胡秀英)女士计划
-
车险5月跟踪:新能源车险增速75%,边缘市场乍现一抹喜色 当前速递
车险5月跟踪:新能源车险增速75%,边缘市场乍现一抹喜色,车险,新能源,