七叶笔记 » golang编程 » Golang 常用4记 sort,bytes.buffer,struct,json

Golang 常用4记 sort,bytes.buffer,struct,json

5.sort包

满足 Interface 接口的类型可以被本包的函数进行排序。

type Interface interface {

// Len 方法返回集合中的元素个数

Len() int

// Less 方法报告索引 i 的元素是否比索引 j 的元素小

Less(i, j int) bool

// Swap 方法交换索引 i 和 j 的两个元素的位置

Swap(i, j int)

}

实现了 sort.Interface 接口的 []int 类型

type IntSlice []int

func (p IntSlice) Len() int // 接口方法

func (p IntSlice) Less(i, j int) bool // 接口方法

func (p IntSlice) Swap(i, j int) // 接口方法

对 data 进行排序(不保证相等元素的相对顺序不变)

data 默认为升序,执行 Reverse 后为降序。

func Sort(data Interface)

对 data 进行排序(保证相等元素的相对顺序不变)

data 默认为升序,执行 Reverse 后为降序。

func Stable(data Interface)

将 data 的排序动作更改为降序,Reverse 并不改变元素顺序,只改变排序行为。

更改操作不可逆,更改后的对象不可以再次 Reverse。

func Reverse(data Interface) Interface

判断 data 是否已经排序

未执行 Reverse 的必须为升序,执行 Reverse 的必须为降序

func IsSorted(data Interface) bool

对 a 进行升序排列

func Ints(a []int)

判断 a 是否为升序排列

func IntsAreSorted(a []int) bool

搜索 a 中值为 x 的索引,如果找不到,则返回最接近且大于 x 的值的索引,可能是 len(a)。

func SearchInts(a []int, x int) int

6.struct的方法,有两种写法,一种是指针,一种是变量

func (self *ST) f(){} //引用能够改变结构字段的值。

func (self ST) f(){}

7.bytes.buffer是一个缓冲byte类型的缓冲器

##NewBuffer 创建一个缓冲器

如果在使用bytes.NewBuffer的时候,参数是[]byte的slice的话

缓冲器里就是这个slice的内容,如果参数是nil的话,意思是New一个空的缓冲器里

##NewBufferString

用bytes.NewBufferString(“hello”)来建立一个内容是hello的缓冲器

buf.Write(s) //将s这个slice写到buf的尾部

buf.WriteString(s) //使用WriteString方法,将一个字符串放到缓冲器的尾部

buf.WriteByte(s) //使用WriteByte方法,将一个byte类型的数据放到缓冲器的尾部

buf.WriteRune(s) //使用WriteRune方法,将一个rune类型的数据放到缓冲器的尾部

buf := bytes.NewBufferString(“hello”) buf.WriteTo(file)

使用WriteTo方法,将一个缓冲器的数据写到w里,w是实现io.Writer的,比如os.File就是实现io.Writer

buf.ReadFrom(file) //将text.txt内容追加到缓冲器的尾部

buf.String() //把buf里的内容转成string

buf.ReadBytes(d),buf.ReadString(d) //读到分隔符,并返回,其中d是分隔符,将缓冲器从头开始,到分隔符的内容都返回

8.encoding/json

//解析对象->json

func toJson(m Message) (string, error) {

b, err := json.Marshal(&m)

return string(b), err

}

//解析json->对象

func parse(str string , v interface{}) error{

return json.Unmarshal([]byte(str), v)

}

相关文章