w.Write() 和 io.WriteString() 返回的结果对于客户端来说其实是一样的。这两个方法接收的参数类型不一样,一种是[]byte,一种是string。对于golang来说显式类型转换会有内存消耗,所以 w.Write([]byte(“test”))理论上会比io.WriteString(“test”)性能更低一点,当调用次数多了,这种差异会比较明显。

init() 是 golang 的内建方法。一个 package 内的 init 方法,会在 import 的时候被隐式调用。

sql.DB 其内部是基于连接池实现的,因此不用过于担心并发的问题。

字符串是 Go 语言中最常用的基础数据类型之一,虽然字符串往往被看做一个整体,但是实际上字符串是一片连续的内存空间,我们也可以将它理解成一个由字符组成的数组。

字符串虽然在 Go 语言中是基本类型 string,但是它实际上是由字符组成的数组,C 语言中的字符串就使用字符数组 char[] 表示,作为数组会占用一片连续的内存空间,这片内存空间存储了的字节共同组成了字符串,Go 语言中的字符串其实是一个只读的字节数组。

字符串和 []byte 中的内容虽然一样,但是字符串的内容是只读的,我们不能通过下标或者其他形式改变其中的数据,而 []byte 中的内容是可以读写的,无论从哪种类型转换到另一种都需要对其中的内容进行拷贝,而内存拷贝的性能损耗会随着字符串和 []byte 长度的增长而增长。

在程序设计中,断言是一种放在程序中的一阶逻辑,目的是为了标示与验证程序开发者预期的结果-当程序运行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止运行,并给出错误消息。

MVC:Model模型层是应用程序的主体部分,最要包括业务逻辑,数据操作和数据模型;View视图层是用户与之交互的界面;Controller控制器接收来自界面的请求,并交给模型进行处理。