1. 零碎知识点

1.new() 与 make() 的区别

new(T) 和 make(T,args) 是 Go 语言内建函数,用来分配内存,但适用的类型不同。

new(T) 会为 T 类型的新值分配已置零的内存空间,并返回地址(指针),即类型为 *T 的值。换句话说就是,返回一个指针,该指针指向新分配的、类型为 T 的零值。适用于值类型,如数组、结构体等。

make(T,args) 返回初始化之后的 T 类型的值,这个值并不是 T 类型的零值,也不是指针 *T,是经过初始化之后的 T 的引用。make() 只适用于 slice、map 和 channel.

2.defer func() { recover() }() 可以拦截panic错误

3.转换小写字母

  1. //转换成小写字母
  2. func toLowerCase(str string) string {
  3. rune_arr := []rune(str)
  4. for i, _ := range rune_arr {
  5. if rune_arr[i] >= 65 && rune_arr[i] <= 90 {
  6. rune_arr[i] += 32
  7. }
  8. }
  9. return string(rune_arr)
  10. }

4.Golang 解决 golang.org/x/ 下包下载不下来的问题

由于众所周知的原因,golang在下载golang.org的包时会出现访问不了的情况。尤其是x包,很多库都依赖于它。由于x包在github上都有镜像,我们可以使用从github.com上把代码clone到创建的golang。org/x目录上就OK了

还有其他的包可以直接进github包里面查找