文章目录
  1. 1. Md5 & Sha
  2. 2. 单元测试
  3. 3. 发布
  4. 4. 反射
  5. 5. 语言交互性
  6. 6. Go标准库
  7. 7. 初读感受

继续看书哈


Md5 & Sha

Code解释大法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
	"fmt"
	"crypto/sha1"
	"crypto/md5"
)

func main () {
	
	var TestString string = string("admin")
	
	Md5Inst := md5.New()
	Md5Inst.Write([]byte (TestString))
	Result := Md5Inst.Sum([]byte(""))
	
	fmt.Printf("%x\n",Result)
	
	Sha1Inst := sha1.New()
	Sha1Inst.Write([]byte (TestString))
	Result = Sha1Inst.Sum([]byte(""))
	
	fmt.Printf("%x\n",Result)
}

单元测试

和JUnit差不多


发布

太差了!!!

打包源代码进行分发,使用者自行编译!!!

现在严重鄙视各种自行编译!!!(突然想起了python,嘿嘿)


反射

反射是高配置,灵活性的体现,但确实是把双刃剑。 高配置,灵活性 === 繁琐,可读性,可维护性 差

Go 中的反射,主要是两个概念Type和Value

用书中的例子,记录下

//传值

1
2
3
var x float64 = 3.4
v := reflect.ValueOf(x) 
v.Set(4.1)

//传址

1
2
3
4
5
6
7
8
9
10
11
12
var x float64 = 3.4
p := reflect.ValueOf(&x)
fmt.Println("Type of P : ", p.Type())
fmt.Println("settability of p : ", p.CanSet())

v:= p.Elem()
fmt.Println("settability of v : ", v.CanSet())


v.SetFloat(7.1)
fmt.Println("v : ", v.Interface())
fmt.Println("x : ", x)
1
2
3
4
5
Type of P :  *float64
settability of p :  false
settability of v :  true
v :  7.1
x :  7.1

语言交互性

Cgo 没啥兴趣


Go标准库

  • 输入输出 bufio, fmt, io, log, flag(处理命令行参数)
  • 文本处理 encoding, bytes, strings, strconv, text, mime, unicode, regexp, index, path(处理路径字符串)
  • 网络 net, http, expvar
  • 系统 os, syscall, sync, time, unsafe
  • 数据结构和算法 math, sort, container, crypto, hash, archive, compress, image(图像编码算法)
  • RunTime runtime, reflect, go

初读感受

没啥东东,interface{}? goroutine? defer糖?

还需要多发展发展,不知道以后在Android 上怎么样,给条活路哈

打包,发布啥的,这都什么年代啦... MakeFile?

现在就觉得做个MessageQueue 啥的还行,和Erlang拼杀?

Done

文章目录
  1. 1. Md5 & Sha
  2. 2. 单元测试
  3. 3. 发布
  4. 4. 反射
  5. 5. 语言交互性
  6. 6. Go标准库
  7. 7. 初读感受