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 {…