Go 语言入门指南(4):基础语法和常用特性解析| 青训营

44 阅读2分钟

十三.字符串

字符

uint8类型,或者叫 byte 型,代表一个ASCII码字符。

转义字符

\r 回车符(返回行首)

\n 换行符(直接跳到下一行的同列位置)

\t 制表符

\' 单引号

\" 双引号

\\ 反斜杠

Go语言中要定义一个多行字符串时,需要使用反引号字符''

常用操作

len(str)			求长度
+或fmt.Sprintf		拼接字符串
strings.Split		分割
strings.contains	判断是否包含
strings.HasPrefix,strings.HasSuffix		前缀/后缀判断
strings.Index(),strings.LastIndex()		子串出现的位置
strings.Join(a[]string, sep string)		join操作

举例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var s1 string = "Hello Go"
	var s2 string = "Hello World"
	fmt.Println(len(s1))	//打印字符串长度
	var s3 = s1 + s2	//字符串拼接
	s4 := fmt.Sprintf("123-%s", s1)	//字符串拼接
	fmt.Println(s4)
	fmt.Println(s3)
	fmt.Println(s1+s2)

	ret := strings.Split(s4,"-")
	fmt.Println(ret)
	fmt.Println(strings.Contains(s1,"Go"))	//包含
}

字符串格式化输入输出

个人认为,和C很相似

func main(){
	var num int = 139
	fmt.Printf("%b\n",num)
	fmt.Printf("%o\n",num)
	fmt.Printf("%x\n",num)
	fmt.Printf("%X",num)
	var b int = 19
	var c int = 012
	var d int = 0xa1
	fmt.Println(b, c, d)
}


十四.JSON处理

1.基本类型的序列化

func main() {
	var num int = 23
	res, err := json.Marshal(num)
	if err != nil{
		fmt.Println("序列化出错")
	}
	fmt.Println(string(res))
}


2.结构体序列化

要求结构体属性名第一个字母必须大写!!!

type Student struct {
	//注意:如果属性小写,则序列化不了,序列化的结果就是空
	name string
	Age int
	Address string
	Hobby []string
}
func main(){
	var stu Student = Student{
		name:"jack",
		Age:23,
		Address:"西安",
		Hobby:[]string{
			"basketball","football","ping-pong","eat",
		},
	}
	res, err := json.Marshal(&stu)
	if err != nil{
		fmt.Println("序列化失败")
		return
	}
	fmt.Println(string(res))
}

3.MAP序列化

type Student struct {
	//注意:如果属性小写,则序列化不了,序列化的结果就是空
	name string
	Age int
	Address string
	Hobby []string
}
func main(){
	var stu Student = Student{
		name:"jack",
		Age:23,
		Address:"西安",
		Hobby:[]string{
			"basketball","football","ping-pong","eat",
		},
	}
	var mymap map[string]interface{} = make(map[string]interface{})
	mymap["name"] = "jack"
	mymap["age"] = 36
	mymap["stu"] = stu
	res, err := json.Marshal(mymap)
	if err != nil{
		fmt.Println("序列化失败")
		return
	}
	fmt.Println(string(res))
}

4.切片序列化

type Student struct {
	//注意:如果属性小写,则序列化不了,序列化的结果就是空
	name string
	Age int
	Address string
	Hobby []string
}
func main(){
	var stu Student = Student{
		name:"jack",
		Age:23,
		Address:"西安",
		Hobby:[]string{
			"basketball","football","ping-pong","eat",
		},
	}
	var mymap []map[string]interface{}
	var mymap1 map[string]interface{} = make(map[string]interface{})
	var mymap2 map[string]interface{} = make(map[string]interface{})
	mymap1["name"] = "jack"
	mymap1["age"] = 36
	mymap1["stu"] = stu
	mymap2["name"] = "jack"
	mymap2["age"] = 36
	mymap2["stu"] = stu
	mymap = append(mymap, mymap2)
	mymap = append(mymap,mymap1)
	res, err := json.Marshal(mymap)
	if err != nil{
		fmt.Println("序列化失败")
		return
	}
	fmt.Println(string(res))
}

十五.时间处理

now: = time.Now() t=time.Date(2023,8,21,11,49,36,0,time.UTC)