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)
}