Category: go
-
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()…
-
go 内存对齐
内存对齐是指首地址对齐,而不是说每个变量大小对齐 为减少内存对齐带来的 padding 浪费. 构建结构体时,先写大的成员
-
go loop,defer 和 闭包
这是一个有趣的例子,用到了 loop, defer 和闭包.
-
使用delve 调试golang程序
golang 调试 dlv exec bin/go_build_main_go — ckfpp -c 10240000
-
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 {…