字符串基本操作
包含 Contains
fmt.Println(strings.Contains("fengfengzhidao", "feng")) // true
fmt.Println(strings.Contains("fengfengzhidao", "zhangsan")) // false
索引 Index
fmt.Println(strings.Index("fengfengzhidao", "feng")) // 0
fmt.Println(strings.Index("fengfengzhidao", "dao")) // 11
fmt.Println(strings.Index("fengfengzhidao", "zhangsan")) // -1
切割 Split
fmt.Println(strings.Split("fengfeng|zhidao", "|")) // [fengfeng zhidao]
fmt.Println(strings.SplitN("feng|feng|zhi|dao", "|", 2)) // [feng feng|zhi|dao]
fmt.Println(strings.SplitN("feng|feng|zhi|dao", "|", 3)) // [feng feng zhi|dao]
拼接 Join
fmt.Println(strings.Join([]string{"www", "fengfengzhidao", "com"}, ".")) // www.fengfengzhidao.com
前缀匹配 HasPrefix
fmt.Println(strings.HasPrefix("fengfengzhidao.com", "fengfeng")) // true
fmt.Println(strings.HasPrefix("fengfengzhidao.com", "xxxx")) // false
后缀匹配 HasSuffix
fmt.Println(strings.HasSuffix("fengfengzhidao.com", "com")) // true
fmt.Println(strings.HasSuffix("fengfengzhidao.com", "
字符串转换
整型转字符串
fmt.Println(strconv.Itoa(123)) // 123
fmt.Println(strconv.Itoa(0b1111)) // 15
fmt.Println(strconv.Itoa(0xabc)) // 2748
字符串转整型
fmt.Println(strconv.Atoi("123")) // 123 nil
fmt.Println(strconv.Atoi("3x14")) // 0 strconv.Atoi: parsing "3x14": invalid syntax
字符串转浮点数
fmt.Println(strconv.ParseFloat("3.14", 32)) // 3.140000104904175 <nil>
fmt.Println(strconv.ParseFloat("3.14", 64)) // 3.14 <nil>
进制互转
fmt.Println(strconv.FormatInt(1025, 2)) // 10000000001
fmt.Println(strconv.FormatInt(0xaa, 10)) // 170
序列化和反序列化
序列化:将对象转换为字节数组
反序列化:将字节数组转换为编程语言中的对象
json
在go语言里面将对象序列化为json是一个非常简单的操作
type Info struct {
Name string `json:"name"`
Pwd string `json:"-"` // 不参与转换
Age int // 不写默认是字段名称
addr string // 小写也不参与转换
Omit string `json:"omit,omitempty"` // 过滤空值
}
func main() {
byteData, _ := json.Marshal(Info{
Name: "fengfeng",
Pwd: "1234",
Age: 21,
addr: "湖南",
Omit: "",
})
fmt.Println(string(byteData)) // {"name":"fengfeng","Age":21,"omit":"1"}
}
var data Info
err := json.Unmarshal([]byte(`{"name":"张三","pwd":"123456","age":18,"addr":"北京", "omit": "xxx"}`), &data)
fmt.Println(data, err) // {张三 18 xxx} <nil>
yaml
go get gopkg.in/yaml.v3
package main
import (
"fmt"
"gopkg.in/yaml.v3"
)
type Info struct {
Name string `yaml:"name"`
Pwd string `yaml:"-"` // 不参与转换
Age int // 不写默认是字段名称
addr string // 小写也不参与转换
Omit string `yaml:"omit,omitempty"` // 过滤空值
}
func main() {
byteData, _ := yaml.Marshal(Info{
Name: "fengfeng",
Pwd: "1234",
Age: 21,
addr: "湖南",
Omit: "",
})
fmt.Println(string(byteData)) // {"name":"fengfeng","Age":21,"omit":"1"}
}
var data Info
err := yaml.Unmarshal([]byte(`{"name":"张三","pwd":"123456","age":18,"addr":"北京", "omit": "xxx"}`), &data)
fmt.Println(data, err) // {张三 18 xxx} <nil>
命令行解析
os.Args
第一个参数是程序本身
fmt.Println(os.Args) // go run main1.go xxx yyy
//[C:\Users\枫枫\AppData\Local\Temp\go-build1239844620\b001\exe\main1.exe xxx yyy]
flag
func main() {
name := flag.String("name", "", "enter name")
flag.Parse()
if name != nil {
fmt.Println(*name)
}
}
var name string
flag.StringVar(&name, "name", "", "enter name")
flag.Parse()
fmt.Println(name)/