Go语法基础
11.错误处理
Go语言的error类型是一个接口,包含error方法,用来返回一个字符串。
type error interface {
Error() string
}
在Go语言中,可以使用一个单独的返回值来传递错误信息。可以很清晰的知道是哪个函数返回了错误,并使用if else来处理错误。 在函数的返回值类型后面加一个error,就会返回错误。
package main
import (
"errors"
"fmt"
)
//在函数的返回值类型后面加一个error
func div(dividend int, divisor int) (int, error) {
if divisor == 0 {
return 0, errors.New("被除数为0")//出现错误输出
}
return dividend / divisor, nil//error默认值为nil
}
func main() {
res1, err := div(4, 2);
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println("4/2 = ", res1)
} //打印 4/2 = 2
res2, err := div(1, 0);
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println("1/0 = ", res2)
}//打印 被除数为0
}
12.字符串操作
- Contains判断字符串中是否包含另一个字符串
- Count字符串计数
- HasPrefix是否以指定字符串开头
- HasSuffix是否以指定字符串结尾
- Index查找某个字符串位置
- Join连接多个字符串
- Repeat重复多个字符串
- Replace替换字符串
- Split将指定的分隔符切割字符串,并返回切割后的字符串切片。
- ToLower将字符串转换为小写字母
- ToUpper将字符串转换为大写字母
- len 字符串长度
package main
import (
"fmt"
"strings"
)
func main(){
a := "baimiao"
fmt.Println(strings.Contains(a,"bai")) //true
fmt.Println(strings.Count(a,"i")) //2
fmt.Println(strings.HasPrefix(a,"bi")) //false
fmt.Println(strings.HasSuffix(a,"iao")) //true
fmt.Println(strings.Index(a,"mi")) //3
fmt.Println(strings.Join([]string{"bai","miao"},"-")) //bai-miao
fmt.Println(strings.Repeat(a,2)) //baimiaobaimiao
fmt.Println(strings.Replace(a,"miao","mao",-1)) //baimao
fmt.Println(strings.Split("bai&miao","&")) //[bai mmiao]
fmt.Println(strings.ToLower("BAI")) //bai
fmt.Println(strings.ToUpper(a)) //BAIMIAO
fmt.Println(len(a)) //7
}
13.字符串格式化
在Go语言中可以用%v来打印任意变量,不需要区分字符串数字,%+v打印详细结果,%#v则更详细。
package main
import (
"fmt"
)
type point struct {
x ,y int
}
func main(){
p := point {1, 2}
fmt.Printf("s=%v\n", p) //s={1 2}
fmt.Printf("s=%+v\n", p) //s={x:1 y:2}
fmt.Printf("s=%#v\n", p) //s=main.point{x:1, y:2}
f := 3.1415926
fmt.Printf("%.2f\n", f) //3.14
}
14.JSON处理
JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。JSON由于比XML更小、更快,更易解析,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
对于Go语言中的JSON处理,可以使用encoding/json包。这个包提供了一组函数和方法,用于将Go数据类型编码为JSON格式,或将JSON解码为Go数据类型。
要将Go数据类型编码为JSON,可以使用json.Marshal函数。
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
Hobby string
}
func main() {
stu := User{"miao", 18, "tennis"}
data, err := json.Marshal(&stu)
if err != nil {
fmt.Printf("序列化错误 err=%v\n", err)
return
}
fmt.Println("序列化后: ", string(data))
}//序列化后: {"Name":"miao","Age":18,"Hobby":"tennis"}
15.时间处理
在Go语言中,常用获取当前时间就是time.Now()
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Now())
t := time.Now()
//获取基本字段
fmt.Println(t.Date()) // 2023 July 30
fmt.Println(t.Year()) // 2023
fmt.Println(t.Month()) // July
fmt.Println(t.ISOWeek()) // 2023 30
fmt.Println(t.Clock()) // 13 25 40
fmt.Println(t.Day()) // 30
fmt.Println(t.Weekday()) // Sunday
fmt.Println(t.Hour()) // 13
fmt.Println(t.Minute()) // 25
fmt.Println(t.Second()) // 40
fmt.Println(t.Nanosecond())// 510359993
fmt.Println(t.YearDay()) // 211
}
16.进程信息
package main
import(
"fmt"
"os"
"os/exec"
)
func main(){
fmt.Println(os.Args) //获取go程序运行时写入的命令行参数
fmt.Println(os.Getenv("PATH")) //获取环境变量
fmt.Println(os.Setenv("AA","BB")) //写入环境变量
//启动子进程,并获取其输入输出
buf, err := exec.Command("grep","127.0.0.1","etc/hosts").CombinedOutput()
if err != nil {
panic(err)
}
fmt.Println(string(buf))
fmt.Println("hello")
}