golang

分类下相关文章

Golang float 与 string,int 类型的相互转换,及如何保留小数位

今天在用 Golang 实现涨幅计算器的时候,第一次接触 Golang 的 float 类型。 这里记录一些 float 类型的基本转换操作。 string 转换为 float package main import ( "fmt" "strconv" ) func main() { input := "3.14" f_input, _ := strconv.ParseFloat(input, 64) fmt.Printf("%f - %T", f_input, f_input) } 执行结果 &g ...

阅读全文...

Golang 在数据库 QueryRow 查询不到数据时,自动插入一条

使用 Golang databae/sql 这个库进行 MySQL 查询时,QueryRow 如果查询不到数据,会报错: sql: no rows in result set go/models/kv.go:18 (0x9f49b5) 对应的代码 err := db.QueryRow("SELECT id, `key`, value FROM kv where `key` = ?", key).Scan(&kv.Id, &kv.Key, &kv.Value) if err != nil { panic(err.Error()) // 第18行 ...

阅读全文...

golang 函数定义

go 函数定义 func add(x int, y int) int { return x + y } 参数的类型在变量名后面 返回类型也在后面 如果多个参数的类型一致,可以省略前面的类型。 例如,上面的函数可以简写为 func add(x, y int) int { return x + y } 返回多个值的函数 func swap(x, y string) (string, string) { return y, x } 对返回值进行命名 func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x retu ...

阅读全文...

Golang Gin 给模板传递 struct 类型的数据

Golang 普通的基础类型变量可以这样传递: {{ .title }} Golang struct 类型: {{ .article.Title }} 注意,struct 的 field 名,通常要首字母大写。 ...

阅读全文...

Golang 使用 blackfriday 将 Markdown 转换为 HTML

在用 golang gin 写一个人民币大写转换的工具,网页中的描述信息是在网站后台以 markdown 形式编辑保存的,在前端展示时需要将 markdown 转换为 html。 在网上找了一圈,就发现一个库用的人比较多,那就是 blackfriday。 Golang blackfriday 的项目地址 https://github.com/russross/blackfriday 列表的渲染有问题 用的过程中发现一个问题,列表渲染时,会将下一行的文字,缀到一行。查了半天没找到原因。 突然在文档里找到一个说明: Hard line breaks. With this extension en ...

阅读全文...

Golang 单引号与双引号的区别

先来看一个报错的 Golang 代码片段: kv, _ := models.GetValue("2") c.HTML(http.StatusOK, "chinese_money_index.html", gin.H{ 'kv' : kv }) 编译时,第三行报错,报错信息如下: invalid character literal (more than one character) 看了一下 Golang 教程才发现: 双引号代表字符串,而字符串由字符组成。 单引号代表字符,严格来说是一个字符。 所以,Golang 中单引号跟双引号不能混 ...

阅读全文...

Golang Gin 项目代码结构之共享 MySQL 数据库连接

想在 Golang Gin 项目中模仿 Laravel 的代码目录结构。参考了网上的一些做法,感觉使用全局变量共享 MySQL 数据库连接的方式最容易上手。 虽然不利于进行单元测试,但是对于练手来说,确实最容易的体验方案。 Gin 项目代码目录结构 新建 models 目录,用于管理 Golang Gin 项目的数据库相关的操作,同时定义一批 model,即 struct。 > mkdir models > touch models/kv.go > touch models/db.go > tree . ├── controllers │   └── hello.go ...

阅读全文...

Golang 访问 struct 成员变量时报错 cannot refer to unexported field or method id

今天将 Golang Gin 项目拆分成了 models, controllers 两个 package,但是当在 controller 中打印一个 models package 中的 struct 结构体的成员变量时,报错: kv.id undefined (cannot refer to unexported field or method id) 具体的代码为: // models package type KV struct { id int key string value string updated_at string } / ...

阅读全文...

Golang 从 MySQL 数据库读取一条数据

刚开始在 sqlx 和 gorm 两者间纠结了半天,准备使用 sqlx 了,看了文档,感觉就是灾难般的文档。 我按照例子硬是没有从 MySQL 读出数据。 又尝试了 gorm,这家伙的文档更加不友好,概念更多。调试了半天,返回的结果 id 永远是 0。我半天没有找到问题。 最终我选择了 database/sql。 http://go-database-sql.org/index.html 参考最友好的一篇使用文档: https://tutorialedge.net/golang/golang-mysql-tutorial/ 测试代码 package main import ( " ...

阅读全文...

Golang 中 log.Println 与 fmt.Println 的区别

log.Println 和 fmt.Println 在 Golang 中都可以作为 console 日志的输出。 但是有什么区别呢? 做个测试: package main import ( "fmt" "log" ) func main() { fmt.Println("fmt.Println") log.Println("log.Println") } 运行结果: $ go run main.go fmt.Println 2019/10/20 15:27:38 log.Println 可见: ...

阅读全文...

Golang 读取 Laravel 项目的 .env 配置文件

例如,我的 Laravel 项目中包含了一些 Golang Gin 的服务接口,我想用 Golang 读取 Laravel 的 .env 配置文件中的 mysql 数据库账号和密码。 发现一个不错的库 GoDotEnv 可以方便的读取并解析 .env 配置文件。 GoDotEnv https://github.com/joho/godotenv 代码示例 package main import ( "github.com/joho/godotenv" "log" "os" ) func main() { err := go ...

阅读全文...

Nginx 转发请求到 Golang 进程

我用 golang gin 写了个财务报销单人民币大写转换的工具,地址如下 https://www.sunzhongwei.com/go/chinese-money 跟我的 PHP Laravel 博客程序放在一个域名下,所以需要区分 golang 的请求做单独处理。 Nginx 配置如下即可: location /go/ { proxy_pass http://127.0.0.1:8080/go/; } 注意 对应的 golang gin 的静态资源文件目录也要调整为 /go/public。 如果继续实用 /public 会跟 laravel 的 /public 目录混淆。 ...

阅读全文...

VIM 临时文件引起的 golang 报错 panic: template: unexpected bad character

今天在调试一个 golang gin 写的网页项目时,遇到一个诡异的问题。 编译并执行 main.go go run main.go 报错: panic: template: .index.html.swp:24: unexpected bad character U+002D '-' in command goroutine 1 [running]: html/template.Must(...) /usr/local/go/src/html/template/template.go:372 github.com/gin-gonic/gin.(*Engine).LoadH ...

阅读全文...

使用 Golang Gin 新建一个网页

总不能将所有逻辑代码都写在一个 main.go 中吧。还是独立出一个 controller 比较好。 gin 项目代码目录结构 mkdir controllers mkdir views controllers 目录用于保存 go 的逻辑代码 views 目录用于保存网页模板代码 controller - go 逻辑代码 package controllers import ( "github.com/gin-gonic/gin" "net/http" ) func ChineseMoneyIndex(c *gin.Context) { ...

阅读全文...

golang 依赖包的版本管理

现实需求场景 我的一个新项目要基于 golang gin web 框架。我可能会在多台开发机上同时进行开发,所以就涉及到 golang 项目的开发环境同步问题。 而目前我只会 go get 进行依赖安装,目前只有一个 gin 依赖包还好;但是如果依赖包多了,那岂不是要麻烦死。 golang 是否有像 php composer 和 python pip 这样的包管理功能。 go modules 找了一圈感觉 go 1.11 引入的 modules 满足我的需求。比之前版本的 go dep 方案好太多了。 go dep 不方便的地方 新项目在自己工作目录下,使用 dep 初始化会报错: $ dep ...

阅读全文...