一个不显眼的破折号,无论是在Golang还是Python中,都可以防止你输出一些不需要的字符。不要在日期和时间前输出0我们用Python输出时间和日期时,一般的格式是这样的:YYYY-mm-ddHH:MM:SS,例如:2021-03-2209:10:12。可以看到03和09前面都有一个0。这样做的好处是日期和时间可以保持相同的长度,所以可以通过字符串的方式来比较大小。但是有时候,由于某些原因,你可能真的不想加0,你只想以2021-3-229:10:12的格式输出时间。但是我们知道在Python中格式化日期时间,代码如下:importdatetimenow=datetime.datetime.now()dt_str=now.strftime('%Y-%m-%d%H:%M:%S')在这个格式化符号中,我们可以看到我们使用了一个字符,月份是%m。是否有其他符号用于表示不带0的日期?其实不需要加0。一个符号来表示,我们只需要在%和m之间加一个破折号即可:importdatetimenow=datetime.datetime.now()dt_str=now.strftime('%Y-%-m-%-d%-H:%-M:%-S')print(dt_str)运行效果如下图所示:Golang结构与Golang之间的JSON转换在使用Golang的时候,我们有时需要转换结构和JSON字符串相互转换。在转换后的项目中,可能会发现一些字段是多余的。我们不希望JSON中的某些字段被转移到结构中,或者结构中的某些字段被转移到JSON中。对于从JSON到结构体的转换,忽略字段非常简单。比如有一个JSON字符串如下:{"name":"kingname","salary":999999999,"address":"Shanghai","handsome":true}转换为结构体时,我没有想要漂亮的字段,所以我可以这样写代码:`}funcmain(){jsonstr:=`{"name":"kingname","salary":999999999,"address":"Shanghai","handsome":true}`varinfoInfoerr:=json.Unmarshal([]byte(jsonstr),&info)iferr!=nil{panic(err)}fmt.Println(info)}运行效果如下图所示:但是问题是,如果现在给你一个结构,但是我应该怎么办如果在转换为JSON时我不想要其中一个字段怎么办?可能有人会觉得在定义resultbody的时候不加json:"xxx"就可以了。但实际执行效果如下图所示:Golang会直接使用结构体中这个字段的名字,将其转为JSON。如果不需要这个字段,其实有一个很简单的方法,就是在定义结构的时候加上json:"-",例如:typeInfostruct{Namestring`json:"name"`Salaryint64`json:"salary"`Addressstring`json:"address"`Handsomebool`json:"-"`}运行效果如下图所示:通过指定这条横线,可以忽略该字段。本文转载自微信公众号“闻所未闻的密码”,可通过以下二维码关注。转载本文请联系Code公众号。
