第5章:函数—体系函数
第5章函数—系统函数
字符串相关函数
【1】统计字符串的长度,按字节进行统计
len(str) 使用内置函数也不用导包的,直接用就行
// len统计字符串的长度,按字节进行统计
// 在golang中,汉字是utf-8字符集,一个汉字3个字节
str := "golang你好"
// 12字节
fmt.Println(len(str))
【2】字符串遍历
(1)利用方式1for-range键值循环
// 对字符串进行遍历
// 方式1利用键值循环,for-range
for i ,value := range str {
fmt.Printf("索引为%d,具体的值为%c
", i, value)
}
(2)r:=[]rune(str)
// 方式2 利用r:=[]rune(str)
r := []rune(str)
for i := 0; i < len(r); i++ {
fmt.Printf("%c
",r[i])
}
【3】字符串转整数
import (
"fmt"
"strconv"
)
n,err := strconv.Atoi("66")
fmt.Println(n,err)
【4】整数转字符串
str = strconv.Itoa(6688)
fmt.Println(str)
【5】查找子串是否在指定的字符串中:
// 查找子串是否在指定的字符串中
fmt.Println(strings.Contains("javaandgolang","go"))
【6】统计一个字符串有几个指定的子串:
// 统计一个字符串中有几个指定的子串
fmt.Println(strings.Count("javaandgolang","a"))
【7】不区分大小写的字符串比较:
//不区分大小写的字符串比较
flag := strings.EqualFold("hello","HELLO")
fmt.Println(flag)
//区分大小写的字符串比较
fmt.Println("hello" == "HELLO")
【8】返回子串在字符串第一次出现的索引值,如果没有返回-1 :
// 返回子串在字符串第一次出现的索引值,如果没有返回-1 :
index := strings.Index("javaandgolang","a")
fmt.Println(index)
【9】字符串的替换
func Replace(s, old, ne string, n int) string
n可以指定你希望替换几个,如果n=-1表示全部替换,替换两个n就是2
// 字符串的替换
s1 := strings.Replace("goandjavagogo","go","golang",2)
s2 := strings.Replace("goandjavagogo","go","golang",-1)
fmt.Println(s1)
fmt.Println(s2)
【10】按照指定的某个字符,为分割标识,将一个学符串拆分成字符串数组:
// 按照指定的某个字符,为分割标识,将一个学符串拆分成字符串数组:
arr := strings.Split("go,java,css",",")
fmt.Println(arr)
【11】将字符串的字母进行大小写的转换:
//将字符串的字母进行大小写的转换:
fmt.Println(strings.ToLoer("Go"))
fmt.Println(strings.ToUpper("go"))
【12】将字符串左右两边的空格去掉:
// 将字符串左右两边的空格去掉:
var s3 string = " go and java "
fmt.Println(s3)
s3 = strings.TrimSpace(s3)
fmt.Println(s3)
【13】将字符串左右两边指定的字符去掉:
// 将字符串左右两边指定的字符去掉:
fmt.Println(strings.Trim("-golang-","-"))
【14】将字符串左边指定的字符去掉:
// 将字符串左边指定的字符去掉:
fmt.Println(strings.TrimLeft("-golang-","-"))
【15】将字符串右边指定的字符去掉:
// 将字符串右边指定的字符去掉:
fmt.Println(strings.TrimRight("-golang-","-"))
【16】判断字符串是否以指定的字符串开头:
// 判断字符串是否以指定的字符串开头:
fmt.Println(strings.HasPrefix("http://.sddzcyz.","http"))
【17】判断字符串是否以指定的字符串结束:
// 判断字符串是否以指定的字符串结束:
fmt.Println(strings.HasSuffix("13344.png","png"))
日期和时间相关函数
【1】时间和日期的函数,需要到入time包,所以你获取当前时间,就要调用函数No函数
package main
import (
"fmt"
"time"
)
func main() {
// 时间和日期的函数,需要到入time包,所以你获取当前时间,就要调用函数No函数
no := time.No()
// No()返回值是一个结构体,类型是time.Time
fmt.Printf("%v --- 对应的类型为%T
",no,no)
// 2023-04-07 21:57:20.2036813 +0800 CST m=+0.000996101 --- 对应的类型为time.Time
fmt.Printf("年%v
",no.Year())
fmt.Printf("月%v
",no.Month())
fmt.Printf("月%v
",int(no.Month()))
fmt.Printf("日%v
",no.Day())
fmt.Printf("时%v
",no.Hour())
fmt.Printf("分%v
",no.Minute())
fmt.Printf("秒%v
",no.Second())
}
【2】日期的格式化
(1)将日期以年月日时分秒按照格式输出为字符串
// 将日期以年月日时分秒按照格式输出为字符串
fmt.Printf("当前年月日%d-%d-%d 时分秒%d:%d:%d
",no.Year(),no.Month(),no.Day(),no.Hour(),no.Minute(),no.Second())
dateStr := fmt.Sprintf("当前年月日%d-%d-%d 时分秒%d:%d:%d
",no.Year(),no.Month(),no.Day(),no.Hour(),no.Minute(),no.Second())
fmt.Println(dateStr)
(2)按照指定格式
// 按照指定格式
dateStr2 := no.Format("2006/01/02 15/04/05")
fmt.Println(dateStr2)
dateStr3 := no.Format("2006-01-02 15:04:05")
fmt.Println(dateStr3)
dateStr4 := no.Format("2006 15:04")
fmt.Println(dateStr4)
内置函数
【3】常用函数
(1)len函数
统计字符串的长度,按字节进行统计
func len(v Type) int
根据变量v类型的不同,len返回值的意义也不同
数组:v中的元素的个数.
数组指针 v中元素的个数
Slice或map: v中的元素的个数; 如果v==nil, len(v)为0.
字符串: v中的字节数.
Channel: the number of elements queued (unread) in the channel buffer;channel缓冲区中未读的元素个数。
如果v==nil, len(v)为0 .
package main
import "fmt"
func main() {
str := "golang"
fmt.Println(len(str))
}
(2)ne函数
分配内存,主要用来分配值类型(int系列, float系列, bool, string、数组和结构体struct)
func ne(Type) Type
内建函数ne分配内存。其第一个实参为类型, 而非值。其返回值为指向该类型的新分配的零值的指针。
num := ne(int)
fmt.Printf("num的类型%T,num的值是%v,num的地址%v,num指针指向的值是%v",num,num,&num,num)
(3)make函数
分配内存,主要用来分配引用类型(指针、slice切片、map、管道chan、interface 等)
参考源码「链接」
参考个人博客cyz