【Golang】✔️走进 Go 语言✔️ 第二十一 延迟处理 & 正则表达式

举报
我是小白呀iamarookie 发表于 2021/09/09 23:48:58 2021/09/09
【摘要】 【Golang】✔️走进 Go 语言✔️ 第二十一 延迟处理 & 正则表达式 概述延迟处理例一例二 正则表达式单匹配多匹配 概述 Golang 是一个跨平台的新生编程语言....

【Golang】✔️走进 Go 语言✔️ 第二十一 延迟处理 & 正则表达式

概述

Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 21 课)

在这里插入图片描述

延迟处理

我们可以使用 defer 实现延时处理. defer 用于资源的释放, 会在函数返回之前进行调用.

在这里插入图片描述

例一

package main

import "fmt"

func main() {

	fmt.Println("a")
	fmt.Println("b")
	defer fmt.Println("c")  // 最后执行
	defer fmt.Println("d")  // 倒数第二执行

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

输出结果:

a
b
d
c

  
 
  • 1
  • 2
  • 3
  • 4

例二

package main

import ("os")

func main() {

	file, _ := os.Open("test.txt")

	// 关闭文件
	defer file.Close()

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

正则表达式

正则表达式 (Regular Expression) 使用了一种字符串匹配的模式, 可以帮助我们检索, 替换文本.

特殊字符 描述
$ 匹配输入字符的结尾位置
() 标记一个子表达式的开始和结束位置
* 匹配前面的子表达零次或多次
+ 匹配前面的子表达式一次或多次
. 匹配除换行符 \n 之外的任意字符
? 匹配前面的子表达式零次或一次
\ 将下一个字符标记为或特殊字符, 或原义字符, 或向后引用, 或八进制转义符
^ 匹配属兔字符串开始位置

格式:



  
 
  • 1

单匹配

格式:

MatchString(pattern string, s string)

  
 
  • 1

参数:

  • pattern: 正则表达式
  • string: 需要匹配的字符串

例子:

package main

import (
	"fmt"
	"regexp"
)

func main() {

	// 电话号码
	phone_number := "(517)-654-2321"

	// 正则表达式
	pattern := "\\([0-9]{3}\\)-[0-9]{3}-[0-9]{4}"

	// 匹配
	match, _ := regexp.MatchString(pattern, phone_number)

	// 调试输出
	fmt.Println("是否为电话号码:", match)

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出结果:

是否为电话号码: true

  
 
  • 1

多匹配

格式:

FindAllString(s string, n int)

  
 
  • 1

参数:

  • s: 需要匹配的字符串
  • n: 返回值匹配值个数, -1 代表全部

例子:

package main

import (
	"fmt"
	"regexp"
)

func main() {

	// 电话号码
	phone_number := "(517)-654-2321, (517)-654-2322, (517)-654-2323"

	// 正则表达式
	regular, _ := regexp.Compile("\\([0-9]{3}\\)-[0-9]{3}-[0-9]{4}")

	// 调试输出
	fmt.Println("是否为电话号码:", regular.FindAllString(phone_number, -1))

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

输出结果:

是否为电话号码: [(517)-654-2321 (517)-654-2322 (517)-654-2323]

  
 
  • 1

在这里插入图片描述

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。

原文链接:iamarookie.blog.csdn.net/article/details/119771496

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。