golang文本编码处理
字符串基本操作 包含 Contains fmt.Println(strings.Contains("fengfengzhidao", "feng")) // true fmt.P
golang文本编码处理
发布时间:2024-04-12 (2024-04-12)

字符串基本操作

包含 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)/