Effective Go-3

Data 分配 通过new和make分配空间: new分配空间,返回指针 make可以进行生成slices,maps,channels,返回类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package data_test import "testing" func TestCreateslices(t *testing.T) { s := make([]string, 3) s[0] = "c" s[1] = "a" s[2] = "o" t.Log(s) } func TestCreatemap(t *testing.T) { m := make(map[string]int) m["k1"] = 1 m["k2"] = 2 t.Log(m) } func TestCreatechannel(t *testing.T) { messages := make(chan string) go func() { messages <- "ping" }() msg := <-messages t.Log(msg) } 数组(Arrays)和切片(Slices) go中更推荐使用切片而不是数组。 数组长度固定 切片可以动态调整容量(cap) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package data_test import "testing" func TestCreatearray(t *testing.T) { a := [...]int{1, 2, 3, 4} t.Log(a) s := make([]int, 4) s = a[0:4] t.Log(s) s = append(s, 5) t.Log(a) t.Log(s) } === RUN TestCreatearray f:\GO\go_test\data\data_test.go:29: [1 2 3 4] f:\GO\go_test\data\data_test.go:32: [1 2 3 4] f:\GO\go_test\data\data_test.go:34: [1 2 3 4] f:\GO\go_test\data\data_test.go:35: [1 2 3 4 5] --- PASS: TestCreatearray (0.00s) 二维切片(Two-dimensional Slices) 下面是二位数组和二位切片的示例。 ...

2021-04-15 · 5 min · 932 words · Garlic Space

Effective Go-2

分号 若在一行最后一个标识符为以下类型 数字 字符串常量 特殊标识符号;break continue fallthrough return ++ – ) } 词法分析器会在标识符后添加分号, 与C不同GO很多地方都省略分号。 另在在if for switch select控制结构后要接 “{”, 例如: 1 2 3 if i < f() { g() } 而不要写成 1 2 3 4 if i < f() { g() } 控制结构 if/switch/for If switch语句中可以接受初始化语句 1 2 3 4 if err := file.Chmod(0664); err != nil { log.Print(err) return err } For 遍历数组,切片,字符串或者map时,可以使用range子句 1 2 3 for key, value := range oldMap { newMap[key] = value } Switch中有两个比较特殊的地方, break跳出指定一个标签范围: ...

2021-04-07 · 2 min · 379 words · Garlic Space

Effective Go - 1

为了减少格式化问题带来的争议, 可以使用 gofmt程序对源码进行格式化。

2021-03-07 · 1 min · 87 words · Garlic Space

比特币,区块链与自由软件

这篇文章 Open source money: Bitcoin, blockchain, and free software

2021-02-24 · 1 min · 80 words · Garlic Space

关于Trie

最早提及Trie树的一篇文章

2021-01-16 · 17 min · 3602 words · Garlic Space

Understanding Linux filesystems: ext4 and beyond

这篇文章Understanding Linux filesystems: ext4 and beyond

2020-09-16 · 1 min · 148 words · Garlic Space

出色管理者如何帮助团队成员解决问题

这篇文章Don’t solve problems if you want to be a great manager 是出自medium

2020-08-12 · 1 min · 67 words · Garlic Space

Why mmap is faster than system calls

原文链接 作者 Alexandra Sasha Fedorova

2020-07-24 · 1 min · 50 words · Garlic Space

为什么x86无法生存-Why x86 won’t survive

前不久, 评估CEO 库克在其全球开发者大宣布,Mac笔记本以及个人电脑将会改用苹果自家的ARM架构处理器。这将是自2006年从PowerPC处理器改用英特尔x86处理器后,又一次CPU架构的调整。下面这篇文章是Medium推送的,不过文章贬低X86中提到的漏洞, 我查了资料其实部分ARM也是存在的。 不过确实是代表了一类观点。 苹果

2020-06-29 · 1 min · 59 words · Garlic Space

Timers and time management in the Linux kernel. Part 7.

这篇文章 Timers and time management in the Linux kernel. Part 7. 是出自 linux-insides

2020-06-07 · 10 min · 1923 words · Garlic Space