获得徽章 0
- day6 dsn
dsn是描述连数据源的一个字符串
在go语言中通常用于连接数据库
其书写格式为<driver>://<username>:<password>@<host>:<port>/<database>
<driver> 表示数据库驱动名,例如 mysql、postgres 等
<username> 和 <password> 表示连接数据库的用户名和密码
<host> 和 <port> 表示数据库所在的主机名和端口号
<database> 表示要连接的数据库名称
在其后面还可以跟上各种参数的设置,如字符集,解析时间类型的parseTime等
例如连接一个mysql数据库下的mydatabase数据库的字符串如下
mysql://user:password@localhost:3306/mydatabase?charset=utf8mb4&parseTime=True展开赞过评论1 - day4 高质量编程
1. 什么是高质量:编写的代码能够达到正确可靠、简洁明晰的目标即可称之为高质量代码
- 边界条件考虑完备
- 异常情况处理,保证稳定性
- 易读易维护
2. 编程原则
- 简单性:以简单清晰的逻辑编写代码
- 可读性:编写可维护代码的第一步是确保代码可读
- 生产力:团队整体工作效率非常重要
编码规范:如何编写高质量代码
1. 代码格式:推荐使用`gofmt`自动格式化代码,现在的常见IDE都支持配置
2. 注释:好的代码有很多注释,坏的代码需要很多注释,注释应该提供代码未表达出的上下文信息
- 注释应该解释代码作用
- 注释应该解释代码如何做的
- 注释应该解释代码实现的原因
- 注释应该解释代码什么情况会出错
3. 命名规范
1. 变量命名
- 简洁胜于冗长
- 缩略词全大写,但当其位于变量开头且不需要导出时用全小写
- 变量距离其被使用的地方越远,则需要携带越多的上下文信息
2. 函数命名
- 函数名不携带包名上下文信息,因为其总是成对出现的
- 函数名应该尽量简短
3. 包命名
- 只有小写字母组成
- 简短并包含一定上下文信息
- 不要与标准库同名
4. 控制流程
- 避免嵌套,保持正常流程清晰
- 保持正常代码路径为最小缩进:优先处理错误情况/特殊情况,尽早返回或继续循环来减少嵌套
5. 错误和异常处理
- 简单错误:优先使用error.New来创建匿名变量来直接表示简单错误,如有格式化需求,使用fmt.error
- 错误的wrap和unwrap实际上是提供了一个error嵌套另一个error的能力,从而生成一个error的跟踪链
- 错误判定:判定一个错误是否为特定错误,使用errors.Is在错误链上获取特定种类的错误,使用errors.As
- panic较为严重,不建议在业务代码中使用panic,程序启动阶段发生不可逆转的错误时,可以在init或main种使用panic
- recover只能在被defer的函数中使用,嵌套无法生效且只在当前goroutine生效展开赞过评论1 - Day1 go环境配的可太怪了
Vscode配置Go环境
1. 上官网下载安装包, 安装到指定文件夹,这里我安装到了F:/golang下
2. 修改环境变量:
GOPATH:F:/golang/bin
GOROOT:F:/golang
3. 打开Vscode 下载go插件
4. 按下ctrl+shift+P,搜索go:install/Update Tools
5. 安装全部所需工具(此步需要翻墙)
6. 新建一个project文件夹(全部的项目文件夹)
7. 文件夹下新建一个test包(测试项目包)
8. test下新建hello.go文件
9. hello.go文件代码如下
package main
import "fmt"
func main() {
fmt.Printf("hello, world!")
}
10. 按下F5调试,配置调试文件launch.json如下
{
"version": "0.2.0",
"configurations": [
{
"name": "LaunchGo",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"env": {
"GOPATH": "F:/golang/bin",
"GOROOT": "F:/golang"
},
"args": [],
}
]
}
11. 对应GOPATH和GOROOT修改为第2步的内容
12. 重新按下F5即可进行调试运行展开赞过评论1
![[流泪]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)