一根短横线在Golang 和 Python 中的妙用

开发 后端
一根不起眼的短横线,在 Golang 和 Python 中,都能够让你不输出某些不想要的字符。

 一根不起眼的短横线,在 Golang 和 Python 中,都能够让你不输出某些不想要的字符。

不输出日期时间前面的0

我们在使用 Python 输出时间日期的时候,一般格式是这样的:YYYY-mm-dd HH:MM:SS,例如:2021-03-22 09:10:12。可以看到03和09前面都有一个0。这样做的好处,是可以让日期时间保持相同的长度,于是就可以通过字符串的方式比较大小。

但有时候,因为某些原因,你可能确实不想补0,你就想输出2021-3-22 9:10:12这种格式的时间。

但我们知道,在 Python 里面把日期时间格式化输出,代码如下:

  1. import datetime 
  2.  
  3. now = datetime.datetime.now() 
  4. dt_str = now.strftime('%Y-%m-%d %H:%M:%S'

在这个格式化符号里面,可以看到我们本身就使用的是一个字符,月份就是%m,难道还有另外一个符号用来表示不补0的日期?

实际上,不补0并不需要另外一个符号来表示,我们只需要在%和m之间加上一根短横线就可以了:

  1. import datetime 
  2.  
  3. now = datetime.datetime.now() 
  4. dt_str = now.strftime('%Y-%-m-%-d %-H:%-M:%-S'
  5. print(dt_str) 

运行效果如下图所示:

Golang 结构体与 JSON 的互相转换

在使用 Golang 的时候,我们有时候需要在结构体和 JSON 字符串之间互相转换。在转换的工程中,可能会发现有些字段是多余的。我们不想让 JSON中的某些字段转到结构体里面,或者不想让结构体里面的某些字段转到 JSON 中去。

对于从 JSON 转到结构体,要忽略字段非常简单,例如有如下一个 JSON 字符串:

  1. {"name""kingname""salary": 999999999, "address""上海""handsome"true

在转成结构体的时候,我不想要handsome这个字段,于是可以这样写代码:

  1. package main 
  2.  
  3. import ( 
  4.  "encoding/json" 
  5.  "fmt" 
  6.  
  7. type Info struct { 
  8.  Name    string `json:"name"
  9.  Salary  int64  `json:"salary"
  10.  Address string `json:"address"
  11.  
  12. func main() { 
  13.  jsonstr := `{"name""kingname""salary": 999999999, "address""上海""handsome"true}` 
  14.  var info Info 
  15.  err := json.Unmarshal([]byte(jsonstr), &info) 
  16.     if err != nil { 
  17.         panic(err) 
  18.     } 
  19.  fmt.Println(info) 

运行效果如下图所示:

但问题是,如果现在给你一个结构体,但是转成 JSON 的时候不想要其中一个字段,应该怎么操作?可能有人会以为,在定义结果体的时候,不要加上json:"xxx"就可以了。但实际执行的效果如下图所示:

Golang 会直接使用这个字段在结构体中的名字来转成 JSON。

如果不想要这个字段,实际上有一个非常简单的办法,就是在定义结构体的时候,加上json:"-",例如:

  1. type Info struct { 
  2.  Name     string `json:"name"
  3.  Salary   int64  `json:"salary"
  4.  Address  string `json:"address"
  5.  Handsome bool   `json:"-"

运行效果如下图所示:

通过指定这个横线,就能忽略这个字段了。

本文转载自微信公众号「未闻Code」,可以通过以下二维码关注。转载本文请联系未闻Code公众号。

 

责任编辑:武晓燕 来源: 未闻Code
相关推荐

2020-05-08 09:37:32

网线网络网速

2009-03-12 10:03:00

双绞线连接网络

2018-04-13 15:32:40

SQL团队开发

2015-03-23 11:56:58

2022-08-15 07:32:03

SQL语句数据库

2022-02-17 20:34:12

Python短路机制开发

2014-01-10 10:53:29

移动广告平台进化分发

2017-02-07 09:15:54

光纤传输介质通信网络

2016-12-01 09:30:03

运维网络网线

2016-05-18 14:50:57

运维PortfastAPI

2020-07-16 11:16:57

云计算SD-WAN运营

2010-09-10 16:17:27

2022-12-13 10:28:53

2010-09-08 15:16:46

clearCSS

2010-09-09 16:54:05

CSSclear

2021-04-06 08:20:24

二叉搜索树数据结构算法

2023-11-20 22:44:09

Golang并发

2023-02-16 17:56:52

2017-12-28 11:25:51

2019-09-02 10:38:30

网线攻击MVP
点赞
收藏

51CTO技术栈公众号