golang中的结构体匿名成员

最近在开发caddy的插件, 碰到了很多以前不怎么注意的地方, 先重点记录下几个点. 写插件比较追求的一点是: 如何不破坏原有的体系而达到想要的效果. 这个确实有点难… 结构体匿名成员 有关结构体匿名成员在《Effective Go》中的embedding一节讲的很详细, 一言一蔽之: 另一种形式的继承. 如果B类型中包含了A类型的匿名成员, 则B类型的实例拥有(继承)了所有A类型实现的方法. 看个简单的例子: package main import "fmt" type I interface { Say() Run() } type XXX struct { Name string } func (x XXX) Say() { fmt.Printf("XXX name is: %s\n", x.Name) } func (x XXX) Run() { fmt.Printf("XXX run away\n") } type YYY struct { XXX Age int } func (y YYY) Say() { fmt.Printf("YYY name is: %s, age is: %d\n", y....

January 27, 2019 · akawhy

新学的bash小技巧

本周遇到不少线上的问题, 由于手生, 花了不少时间, 这里重新记录一下. 将多行合并成一行 之前经常用到的是用xargs. 通常是利用find找到对应的文件, 然后整成一行: find . | xargs. 不过这次是需要将对应的行使用逗号分隔, 这个用xargs就搞不定了, 需要使用paste: find . | paste -sd ',' - 比较两个文件, 找出在一个文件中而不在另一个文件中的行 很常见的一个需求, 但是花了不少时间. 答案是comm. 将两个排好序的文件comm一下会输出三列, 分别代表仅在第一文件中的, 两个文件都出现过的, 仅在第二个文件中的. 一般会通过-123参数来取消某列的输出, 达到需要的效果 ## 找出只在第一个文件中出现的 comm -23 file1 file2 打印文件的第n到m行 使用sed. 这个指令对我来说已经有点陌生了. ## 打印第二到第三行 ls -l | sed -n '2,3p;4q' 最后 工具长时间不用真的会生疏不少, 幸好搜索能力还在;) 还记得之前刚上手学Linux的时候, 各种指令各种学. 现在重新翻翻书架上的《Linux Shell 脚本攻略》还能收获不少

January 25, 2019 · akawhy