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

Posted 我是小白呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang✔️走进 Go 语言✔️ 第二十一 延迟处理 & 正则表达式相关的知识,希望对你有一定的参考价值。

【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")  // 倒数第二执行

}

输出结果:

a
b
d
c

例二

package main

import ("os")

func main() {

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

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

}

正则表达式

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

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

格式:


单匹配

格式:

MatchString(pattern string, s string)

参数:

  • 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)

}

输出结果:

是否为电话号码: true

多匹配

格式:

FindAllString(s string, n int)

参数:

  • 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))

}

输出结果:

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

以上是关于Golang✔️走进 Go 语言✔️ 第二十一 延迟处理 & 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Golang✔️走进 Go 语言✔️ 第二十课 原子操作 & 互斥体

Golang✔️走进 Go 语言✔️ 第二十课 原子操作 & 互斥体

Golang✔️走进 Go 语言✔️ 第二十四课 TCP 高阶操作

Golang✔️走进 Go 语言✔️ 第二十四课 TCP 高阶操作

Golang✔️走进 Go 语言✔️ 第二十二课 json & 文件读写

Golang✔️走进 Go 语言✔️ 第二十二课 json & 文件读写