golang学习笔记14-函数(三):系统函数

注:本人已有C,C++,Python基础,只写本人认为的重点。
学完前两节,这节就轻松多了,只要知道怎么用别人的函数即可。这讲的系统函数分为字符串函数,日期和时间函数,三个内置函数len,new,make,但本文不做详细分析,直接上代码演示简单用例,想了解更多用法可参考官方文档:https://studygolang.com/pkgdoc

一、字符串函数

字符串函数还是挺多的,但有些我之前的笔记讲过:
笔记10循环结构:len统计字符串长度,for-range遍历字符串,str转rune切片。
笔记6更方便的转换:提供了更方便的字符串和基本类型互转的包。
还有些直接看代码即可:

package main

import (
	"fmt"
	"strings"
)

func main() {
	// 1. 查找子串是否在指定的字符串中
	str1 := "Hello, world!"
	substr1 := "world"
	fmt.Println(strings.Contains(str1, substr1)) // 输出: true

	// 2. 统计一个字符串有几个指定的子串
	str2 := "ababcabc"
	substr2 := "abc"
	count := strings.Count(str2, substr2)
	fmt.Println(count) // 输出: 2

	// 3. 不区分大小写的字符串比较
	str3a := "Hello"
	str3b := "hello"
	fmt.Println(strings.EqualFold(str3a, str3b)) // 输出: true

	// 4. 返回子串在字符串第一次出现的索引值,如果没有返回-1
	str4 := "Hello, world!"
	substr4 := "world"
	index := strings.Index(str4, substr4)
	fmt.Println(index) // 输出: 7

	// 5. 字符串的替换
	str5 := "Hello, world!"
	newStr5 := strings.ReplaceAll(str5, "world", "Go")
	fmt.Println(newStr5) // 输出: Hello, Go!

	// 6. 按照指定的某个字符为分割标识,将一个字符串拆分成字符串数组
	str6 := "apple,banana,cherry"
	splitStr6 := strings.Split(str6, ",")
	fmt.Println(splitStr6) // 输出: [apple banana cherry]

	// 7. 将字符串的字母进行大小写的转换
	str7 := "Hello, World!"
	fmt.Println(strings.ToLower(str7)) // 输出: hello, world!
	fmt.Println(strings.ToUpper(str7)) // 输出: HELLO, WORLD!

	// 8. 将字符串左右两边的空格去掉
	str8 := "   Hello, World!   "
	fmt.Println(strings.TrimSpace(str8)) // 输出: Hello, World!

	// 9. 将字符串左右两边指定的字符去掉
	str9 := "***Hello, World!***"
	fmt.Println(strings.Trim(str9, "*")) // 输出: Hello, World!

	// 10. 将字符串左边指定的字符去掉
	str10 := "***Hello, World!"
	fmt.Println(strings.TrimLeft(str10, "*")) // 输出: Hello, World!

	// 11. 将字符串右边指定的字符去掉
	str11 := "Hello, World!***"
	fmt.Println(strings.TrimRight(str11, "*")) // 输出: Hello, World!

	// 12. 判断字符串是否以指定的字符串开头
	str12 := "Hello, world!"
	prefix := "Hello"
	fmt.Println(strings.HasPrefix(str12, prefix)) // 输出: true

	// 13. 判断字符串是否以指定的字符串结束
	str13 := "Hello, world!"
	suffix := "world!"
	fmt.Println(strings.HasSuffix(str13, suffix)) // 输出: true
}

二、日期和时间函数

package main

import (
	"fmt"
	"time"
)

func main() {
	// 获取当前时间
	now := time.Now()

	// 1. 获取年、月、日、时、分、秒
	year := now.Year()            // 获取当前年份
	month := now.Month()          // 获取当前月份
	day := now.Day()              // 获取当前日
	hour := now.Hour()            // 获取当前小时
	minute := now.Minute()        // 获取当前分钟
	second := now.Second()        // 获取当前秒

	// 输出当前的年、月、日、时、分、秒
	fmt.Printf("当前时间: %d年%d月%d日 %d时%d分%d秒\n", year, month, day, hour, minute, second)

	// 2. 格式化时间,显示年月日时分秒
	formattedTime := now.Format("2006年01月02日 15时04分05秒") // 自定义格式化
	fmt.Println("格式化后的时间:", formattedTime)

	// 3. 解析字符串为时间
	timeString := "2024年09月24日 10时00分00秒"
	parsedTime, err := time.Parse("2006年01月02日 15时04分05秒", timeString) // 将字符串解析为时间
	if err != nil {
		fmt.Println("解析时间错误:", err)
	} else {
		fmt.Println("解析后的时间:", parsedTime)
	}

	// 4. 时间的加减
	futureTime := now.Add(48 * time.Hour) // 在当前时间基础上加48小时
	fmt.Println("未来时间:", futureTime.Format("2006年01月02日 15时04分05秒"))

	pastTime := now.Add(-24 * time.Hour) // 在当前时间基础上减24小时
	fmt.Println("过去时间:", pastTime.Format("2006年01月02日 15时04分05秒"))

	// 5. 计算时间差
	duration := futureTime.Sub(now) // 计算时间差
	fmt.Println("时间差(小时):", duration.Hours())
}

三、内置函数

package main

import "fmt"

func main() {
	// 1. len 函数
	// len 函数用于返回数组、切片、字符串、映射(map)、管道(channel)等的长度或元素个数。
	str := "Hello, Go!"
	arr := []int{1, 2, 3, 4, 5}
	fmt.Println("字符串的长度:", len(str)) // 输出: 10,中文逗号占了2字节
	fmt.Println("数组的长度:", len(arr))  // 输出: 5

	// 2. new 函数
	// new 函数用于分配内存并返回指向该内存的指针。返回的指针指向零值。
	pointer := new(int)              // 分配一个整型的内存
	*pointer = 10                    // 设置其值为 10
	fmt.Println("指针指向的值:", *pointer) // 输出: 10

	// 3. make 函数
	// make 函数用于创建切片、映射(map)和管道(channel)。返回的是初始化后的值,而不是指针。
	slice := make([]int, 5)     // 创建一个长度为 5 的切片,初始值为 0
	slice[0] = 1                // 设置第一个元素
	slice[1] = 2                // 设置第二个元素
	fmt.Println("切片内容:", slice) // 输出: [1 2 0 0 0]

	// 创建一个映射(map)
	myMap := make(map[string]int) // 创建一个空的映射
	myMap["apple"] = 5            // 添加元素
	myMap["banana"] = 10          // 添加元素
	fmt.Println("映射内容:", myMap)   // 输出: map[apple:5 banana:10]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值