golang学习之go 常用内置库与内置函数

strings包

包含字符串的常用操作,使用需引入strings包

import (
	"strings"
)

子字符串包含判断

	println(strings.Contains("Golang编程语言", "lang编程"))//true
	println(strings.Contains("Golang编程语言", "Lang编程"))//false

字符串比较

	println(strings.Compare("aa", "aa"))//0:  aa == bb
	println(strings.Compare("aa", "ab"))//-1: aa < bb
	println(strings.Compare("bb", "az"))//1: bb > az
	println(strings.Compare("中国", "汉字"))//-1

大小写转换

	println(strings.ToLower("ABCD汉字"))//abcd汉字
	println(strings.ToUpper("abcd汉字"))//ABCD汉字

包含前缀后缀

	println(strings.HasPrefix("pre_txt", "pre"))// true
	println(strings.HasSuffix("txt_suf", "suf"))// true

字符串分割

	strSlice := strings.Split("go|java|html|C++", "|")
	fmt.Print(strSlice)//[go java html C++]

字符串拼接

	strSlice := []string{
    
    "go", "java", "html", "C++"}
	println(strings.Join(strSlice, "|"))//go|java|html|C++

strconv包

包含了字符串和常用数值类型的转换,使用需引入strconv包

import (
	"strconv"
)

bool 类型与string 类型转换

	b, err := strconv.ParseBool("true")
	if err == nil {
    
    
		fmt.Println(b)
	}
	s := strconv.FormatBool(true)
	fmt.Println(s)

跟进strconv.ParseBool源码,可以看到可以转换为bool类型的字符串包含"1", “t”, “T”, “true”, “TRUE”, “True"与"0”, “f”, “F”, “false”, “FALSE”, “False”。

func ParseBool(str string) (bool, error) {
    
    
	switch str {
    
    
	case "1", "t", "T", "true", "TRUE", "True":
		return true, nil
	case "0", "f", "F", "false", "FALSE", "False":
		return false, nil
	}
	return false, syntaxError("ParseBool", str)
}

number数字与string的转换

	strconv.Itoa(123)//整数转换为字符串
	strconv.Atoi("123")//字符串转换为整数

	strconv.ParseFloat("3.1415", 64)// 转换为 float64
	fmt.Println(strconv.FormatFloat(3.1415, 'f', 6, 32))// 打印 3.141500

time包

	currentTime := time.Now()//获取当前时间
	fmt.Println(currentTime)//2022-09-10 15:46:24.6267011 +0800 CST m=+0.004978801
	fmt.Println(currentTime.Year())//2022
	fmt.Println(currentTime.Month())//September
	fmt.Println(currentTime.Date())//2022 September 10
	fmt.Println(currentTime.Day())//10
	fmt.Println(currentTime.Hour())//15
	fmt.Println(currentTime.Minute())//46
	fmt.Println(currentTime.Second())//24

sort排序包

package main

import (
	"fmt"
	"sort"
)

func main() {
    
    
	sliceint := []int{
    
    7, 5, 8, -2, 9, 1, 4}
	sort.Ints(sliceint)
	fmt.Println(sliceint)

	sort.Sort(sort.Reverse(sort.IntSlice(sliceint)))
	fmt.Println(sliceint)

	sliceStr := []string{
    
    "python", "java", "c++", "c", "golang", "PHP"}
	sort.Strings(sliceStr)
	fmt.Println(sliceStr)

	sort.Sort(sort.Reverse(sort.StringSlice(sliceStr)))
	fmt.Println(sliceStr)

}

io/ioutil 读写工具包

	b, _ := ioutil.ReadFile("main.go")
	fmt.Println(string(b))

	ioutil.WriteFile("main.go", []byte(""), fs.ModeAppend)

bufio 缓冲io读写包

file, _ := os.Open("sort.go")
	bufreader := bufio.NewReader(file)
	line, _, _ := bufreader.ReadLine()
	println(string(line))

os包

获取当前目录pwd

pwd, err := os.Getwd()

创建系统目录

os.MkdirAll("patn", os.ModeDir)

创建文件

os.Create("filename")

print、println打印函数

println("hello world")

len函数

计算 string、array、slice、map、channel的长度

println(len("abc汉字"))//9

arr := [3]int{
    
    1, 2, 3}
println(len(arr))//3

ss := make(map[string]string, 3)
println(len(ss)) // 0

cap函数

计算容器的最大容量 slice channel

	c := make(chan int, 10)
	println(cap(c))//10
	
	arr := [3]int{
    
    1, 2, 3}
	println(cap(arr))//3

	//ss := make(map[string]string, 3,10) //编译错误
	ss := make(map[string]string, 3)
	//println(cap(ss))//编译错误

make函数

make用于初始化 slice、map、channel

	ints := make([]int, 10, 20)
	fmt.Println(ints) //[0 0 0 0 0 0 0 0 0 0]

	maps := make(map[string]interface{
    
    }, 10)
	fmt.Println(maps)

	c := make(chan int, 10)
	fmt.Println(c)

new函数

new 用于初始化值类型的零值并返回其指针

iptr := new(int)
fmt.Println(iptr)//地址
fmt.Println(*iptr)// 0

close函数

用于关闭channel

c := make(chan int, 10)
close(c)

copy函数

用于拷贝slice

	srcSli := []string{
    
    "d"}
	dstSli := []string{
    
    "abc"}
	copy(dstSli, srcSli)
	fmt.Println(srcSli)//[d]
	fmt.Println(dstSli)//[d]
	fmt.Println(i)//拷贝数量

append函数

用于向slice中追加数据

	srcSli := []string{
    
    "d"}
	dstSli := append(srcSli, "ooo")
	fmt.Println(srcSli)//[d]
	fmt.Println(dstSli)//[d ooo]

delete函数

用于删除map中指定key数据

studentScore := map[string]int{
    
    "Lily": 10, "Lucy": 15}
delete(studentScore, "Lily")

main函数与init函数

main函数和init函数一样都没有入参与返回值,不同的是main函数需要在package main包内,init函数可以定义在任何包内。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_56349119/article/details/126735283