go_1.21泛型示例

package demo import ( “math/rand” “time” ) // 定义泛型接口 type RandomElementer[T any] interface { // 返回一个随机的元素,如果集合为空,返回(zero, false) RandomElement() (T, bool) } func MustRandom[T any](collection RandomElementer[T]) T { val, ok := collection.RandomElement() if !ok { panic(“collection is empty.”) } return val } // MyList 泛型集合. type MyList[T any] []T // MyList 实现接口RandomElement func (l MyList[T]) RandomElement()… Continue reading go_1.21泛型示例

Published
Categorized as go, language

go 内存对齐

内存对齐是指首地址对齐,而不是说每个变量大小对齐

为减少内存对齐带来的 padding 浪费. 构建结构体时,先写大的成员

kmp匹配字符串

  kmp算法常用于优化字符串匹配,例如下面的问题: 有一个字符串a = “BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串b = “ABCDABD” 一般的做法是循环比较。 func contain(a string, b string) bool { for i := 0; i < len(a); i++ { k := i for j := 0; j < len(b); { if b[j] == a[k] { if j == len(b)-1 { return true } j++ k++ } else {… Continue reading kmp匹配字符串

Published
Categorized as algorithm, go