Web工作方式
- Go通过
ListenAndServe
来建立web服务器,底层是初始化一个server
对象,然后调用net.Listen("tcp",addr)
来监听端口。 - 调用
srv.serve(net.Listener)
函数来处理接收客户端请求。函数里面为一个for{}
,首先通过accept
接受请求,接着创建一个Conn,最后单独开一个goroutine取执行:go c.server()
。 - 用户的每一次请求都是一个新的goroutine去执行。
- conn通过解析request
c.readRequest()
获取相应的handler := c.server.Handler
,它本质是一个路由器,通过它来匹配url跳到对应的handle函数。 - 可通过`http.HandleFunc("/",sayhelloName)来注册请求的路由规则。
OS获取环境变量
os.getenv()获取环境变量获取不到最新设置的环境变量,最新设置的需要重新启动电脑获取
基本类型
这两天在搞反射,看到Go的基础数据类型那么多,int,int32,int64都有,而且运算过程中还需要转换,所以抽空看了些博客以及官方文档。
- int跟uint
- 有符号:int8,int16,int32,int64
- 无符号:unit8,unit16,unit32,uint64
- int和unit取决于操作系统,在32位系统就是32字节,在64位系统就是64字节
- int跟int32不是相同的类型,虽然在特定的场景下它们大小相同,但是在运算过程中需要转换
- byte是unit8的别名,rune是int32的别名
- 浮点类型为float32和float64
- 浮点类型在运算过程中可能存在精度丢失的情况
- string
- 字符串是不可变的,一旦创建,就不能改变字符串的内容
- 可以使用内置函数len来发现s的长度,如果字符串为常量,则le