Go语言踩坑小记
tbghg

时区

被这个傻卵玩意折磨了一晚上,转换成SQL语句后自己放mySQL运行是正确的,但它自己运行就打死也不对,后来发现是时区的问题,我的那个数后面是+0000,mySQL里面的是+0800( UTC:零时区 +0000, China: 东八区 +0800)

就是说转化的时候要把时区改成当地时区

1
2
timestamp1, _ := time.Parse("2006-01-02 15:04:05", dateStr)// 没有设置,为默认时区+0000
timestamp2, _ := time.ParseInLocation("2006-01-02 15:04:05", dateStr, time.Local)//设置为本地时区

时间格式化

Go语言中格式化时间模板不是常见的Y-m-d H:M:S而是使用Go语言的诞生时间 2006-01-02 15:04:05 -0700 MST(感觉有什么大病)

例如:

1
2
currentTime := time.Now()
fmt.Println("YYYY.MM.DD : ", currentTime.Format("2006.01.02 15:04:05"))

int int32 int64

参考文章

1
2
3
4
5
int   类型大小为 8 字节
int8 类型大小为 1 字节
int16 类型大小为 2 字节
int32 类型大小为 4 字节
int64 类型大小为 8 字节

go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节; 如果是64位操作系统,int类型的大小就是8个字节

由于GO语言中各int类型的取值范围不同,各int类型间进行数据转换时,会存在数据截断的问题,在使用过程中要引起注意

1
2
3
4
5
6
7
8
9
int8:   -128 ~ 127
int16: -32768 ~ 32767
int32: -2147483648 ~ 2147483647
int64: -9223372036854775808 ~ 9223372036854775807

uint8: 0 ~ 255
uint16: 0 ~ 65535
uint32: 0 ~ 4294967295
uint64: 0 ~ 18446744073709551615

Goland同一个包下无法调用其他文件

问题描述

1
2
3
project
-main.go
-router.go

package都是main,且router中需要调用的已大写,但运行时就是显示调不到

分析

对比在终端使用go build main.go无法正常调用,使用go build可以正常使用。

直接在文件上右键运行相当于go build xxx.go

解决方法

image

编辑配置,运行种类设置为目录,选择运行入口所在的目录即可

gin框架

c.JSON并不会return,记着看看后面是不是需要接return

 评论
评论插件加载失败
正在加载评论插件