golang

分类下相关文章

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 ...

阅读全文...

golang 命令 go run 与 go build 的区别

go run 简化了 golang 程序先编译后执行的操作。 例如: go run main.go 可以直接运行 golang 程序。但是与 go build 再执行不同的是,不会产出可执行文件。 非常适合本地开发调试。 go build 编译 golang 程序,但是不执行。 例如: go build main.go 会生成可执行文件 main。需要手动执行 ./main go run 前需要 go build 么? 不需要 ...

阅读全文...

搭建 golang gin 的开发环境,并写个 hello world

安装 gin $ go get -u github.com/gin-gonic/gin hello world 代码 新建一个 gin.go 文件 package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ "message& ...

阅读全文...

Golang 1.13: 解决国内 go get 无法下载的问题

在下载并安装 go 1.13 之后,安装 golang gin 依赖包的时候,发现长时间没有响应,无法下载,从返回的错误信息看应该是国内无法访问 golang.org。 $ go get -u github.com/gin-gonic/gin package golang.org/x/sys/unix: unrecognized import path "golang.org/x/sys/unix" (https fetch: Get https://golang.org/x/sys/unix?go-get=1: dial tcp 216.239.37.1:443: co ...

阅读全文...

golang 的变量声明及基本变量类型

golang 变量声明,与赋值 var province, city string province = "山东省" city = "烟台市" fmt.Println(province, city) 只声明,但是未初始化的变量,默认值为: string: 空字符串 数值类型为 0 bool 型为 false 声明的同时进行初始化,可以省略变量类型 变量会使用初始化值的类型作为其类型 var language = "golang" fmt.Println(language) 多个变量同时赋值 var i, j = 1, 2 fm ...

阅读全文...

Ubuntu 下载并安装 golang 编译器,工具以及类库

系统环境 Windows 10 WSL Ubuntu 18.04 LTS。 开始使用 ubuntu apt install,但是里面最新的版本时 go 1.12 没有最新版本的 1.18, 所以我改为从 golang 官网下载安装。这种方式的安装,安装包更小,也更快。比从 ubuntu 的源安装快太多了。 确认 golang 的最新版本 到 golang 的官方下载页: https://golang.org/dl/ 找到最新的版本的版本号,例如:1.18 安装 golang wget https://dl.google.com/go/go1.18.linux-amd64.tar.gz 下载速 ...

阅读全文...