Golang - 常用系统函数

字符串函数

Go 默认使用 Unicode 字符集,并采用 utf-8 编码,一个中文三个字节

  1. 统计字符串长度,按字节:len(str)
func main() {
	fmt.Println(len("hello world"))
	fmt.Println(len("北京"))
}

# 输出
11	// 整个字符串的长度
6	// UTF-8编码,一个中文三个字节
  1. 字符串遍历,有中文的情况下不能直接遍历:r := []rune(str)
func main() {
	str := "北京"
	for i := 0; i < len(str); i++ {
		fmt.Println(str[i])
	}
}

# 输出
229
140
151
228
186
172

使用 rune 转换

func main() {
	str := []rune("北京")
	for i := 0; i < len(str); i++ {
		fmt.Printf("%c", str[i])
	}
}
  1. 字符串转整数,如果不是整数格式,返回整数默认值 0:n,err := strconv.Atoi(“你好”)
s, _ := strconv.Atoi("123")	// 123
s, _ := strconv.Atoi("你")	// 0
  1. 整数转字符串:strconv.Itoa(123)
  2. 字符串转 []byte
var bytes = []byte(s)
  1. []byte 转字符串
s1 := string([]byte{97,98,99})
  1. 10 进制转 2,8,16 进制
// 123 转为 2 进制
f := strconv.FormatInt(123, 2)
  1. 查找字符串是否包含子串
contains := strings.Contains("abcdefgtom", "tom")
  1. 统计一个字符串有几个指定的子串
// 返回出现的次数
count := strings.Count("abmcfsddefgtom", "f")
  1. 忽略大小写的字符串比较
equal := strings.EqualFold("asd", "AsD")
  1. 返回子串在字符串第一次出现的 index 值,如果没有返回 -1
// 第一次出现 s 的索引位置为 1
index := strings.Index("asd_asd", "s")
  1. 返回子串在字符串最后一次出现的 index,如果没有返回 -1
index := strings.LastIndex("asd_asd", "s")
  1. 将指定的子串替换为另一个子串
// n 表示希望替换几个,n = -1 表示全部替换
replace := strings.Replace("asd_asd", "a", "o", n)
  1. 分割字符串
split := strings.Split("asd_asd", "_")
  1. 将字符串的字母进行大小写转换
str := "Google"
lower := strings.ToLower(str)
upper := strings.ToUpper(str)
fmt.Println(lower)
fmt.Println(upper)
  1. 将字符串左右两边的空格去掉
trim := strings.TrimSpace("   hello    ")
  1. 将字符串左右两边指定的字符去掉
trim := strings.Trim("!hello!", "!")
  1. 将字符串左边指定的字符去掉
trim := strings.TrimLeft("!hello!", "!")
  1. 将字符串右边指定的字符去掉
trim := strings.TrimRight("!hello!", "!")
  1. 判断字符串是否以指定的字符串开头
prefix := strings.HasPrefix("http://icloudent.com", "http")
  1. 判断字符串是否以指定的字符串结尾
suffix := strings.HasSuffix("http://icloudent.com", "com")

时间和日期函数

时间和日期相关的函数,需要导入 time 包

  1. 获取当前时间
now := time.Now()
fmt.Printf("type=%T, val=%v", now, now)

# 输出
type=time.Time, val=2022-05-31 18:18:16.4409251 +0800 CST m=+0.001031401
  1. 获取时间的年月日时分秒等信息
fmt.Println(now.Year())
fmt.Println(now.Month())
fmt.Println(now.Day())
fmt.Println(now.Hour())
fmt.Println(now.Minute())
fmt.Println(now.Second())

# 输出
2022
May
31
18
22
15
  1. 格式化日期时间

%02d、%2d、%d 的区别:
%d:普通的整型输出格式
%2d:将数字按宽度为2处理,采用右对齐的方式,如果数据不足两位,则左边补空格
%02d:跟%2d意思相同,只不过如果数据不足两位,左边补0。(%.2d 效果相同)

  • 第一种方式
sprintf := fmt.Sprintf("%d-%d-%d %d-%d-%d", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Minute())
fmt.Println(sprintf)

# 输出
2022-5-31 18-31-31
  • 第二种方式
// 2006-01-02 15:04:05:各个数字是固定的,但是格式可以自由组合
now.Format("2006-01-02 15:04:05")

// 只需要日期
now.Format("2006-01-02")
  1. 时间的常量
    在这里插入图片描述
// 比如 24 小时
time.Sleep(time.Hour * 24)	// 线程休眠
  1. 获取当前 unix 时间戳和 unixnano 时间戳
now.Unix()
now.UnixNano()

内置函数

Golang 提供的可以直接使用的函数
内置函数文档地址

举例:

  • len:计算数据类型的长度,比如 string、array、slice、map、channel
  • new:用来分配内存,主要用来分配值内存,比如 int、float32、struct… 等,返回的是指针类型
  • make:用来分配内存,主要用来分配引用类型,比如 chan、map、slice。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值