Golang的格式化输出

格式 描述
%v 按值的本来值输出
%+v 在 %v 基础上,对结构体字段名和值进行展开
%#v 输出 Go 语言语法格式的值
%T 输出 Go 语言语法格式的类型和值
%% 输出 % 本体
%b 整型以二进制方式显示
%o 整型以八进制方式显示
%d 整型以十进制方式显示
%x 整型以十六进制方式显示
%X 整型以十六进制、字母大写方式显示
%U Unicode 字符
%f 浮点数
%p 指针,十六进制方式显示
%t 输出bool值
%q 单引号围绕的字符字面值,由Go语法安全地转义

https://www.cnblogs.com/rickiyang/p/11074171.html


golang结构体转json时,结构体中time.Time字段如何转为Y:m:d H:i:s格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package main

import (
"time"
"fmt"
"reflect"
"encoding/json"
)

type BillInfo struct {
Name string `json:"name"`
Gender string `json:"gender"`
BirthPlace string `json:"birthplace"`
BirthDay time.Time `json:"birthday"`
}

func main() {

var bill BillInfo

bill.Name = "Bill Gates"
bill.Gender = "male"
bill.BirthPlace = "Seattle"

bill.BirthDay = time.Date(1955, 10, 28, 0, 0, 0, 0, time.Local)

fmt.Println(bill.BirthDay)
fmt.Println(reflect.TypeOf(bill.BirthDay))

rs, err := json.Marshal(bill)
if err != nil {
fmt.Println(err)
}

fmt.Println(string(rs))

}

输出为:

1
2
3
1955-10-28 00:00:00 +0800 CST
time.Time
{"name":"Bill Gates","gender":"male","birthplace":"Seattle","birthday":"1955-10-28T00:00:00+08:00"}

Tokio的使用

请用通俗易懂的语言,讲一下rust和tokio的关系?为什么需要tokio?官方为什么不提供?

Rust 和 Tokio 的关系可以用一个很形象的比喻来解释:

Rust 就像是一个工厂,它提供了制造各种产品的工具和材料,但它本身不会告诉你具体要生产什么产品。

Rust杂谈 HashMap性能比不上Java?

https://www.bilibili.com/video/BV1RTiceCEr6/

大家好,最近我的一个同事和我反馈说,Rust中的HashMap比Java标准库中的HashMap性能要差很多。并且他还给我提供了一份代码,同样的逻辑分别用Java和Rust写了一遍,测试多次后都得出结论说Java中的HashMap性能会好很多。我觉得很有意思,然后把代码拿过来测试一下。我在我自己的工作机器上和家用机器上都进行了多次测试,最终的结论确实和他反馈的保持一致。随后我进行了一些分析,今天给大家来简单分享一下。

我们就来看一下这份代码。首先我们看一下Rust版本,这个代码比较简单。首先我们初始化了一个100万个元素的HashMap,然后它的key和value都是i32类型。然后我们做了100次测试,每次测试去for循环get 1,000,000次,也就是将这个HashMap中的所有元素都访问一遍。每次执行我们都会统计一下这个查询100万次的耗时,最后我们会输出最后五次的结果。

Rust杂谈 如何禁止实现Drop trait

https://www.bilibili.com/video/BV1wMbTeXE5b/

大家好,今天给大家来分享一个新的话题,就是如何在Rust中禁止自定义实现Drop trait。

我们先看一下这里的代码。这边定义了一个struct User,然后我们给这个User实现了一个Drop trait。也就是当这个User被析构之前,就会打印一条这样的信息。我们来执行一下,可以看到没问题。这个main函数结束之前,User会被析构,然后drop函数会被调用,这行println会被执行。

MySQL存储过程


崔爽备注: 分5步执行,

  1. DELIMITER //
  2. 中间这一大段
  3. DELIMITER ;
  4. – 调用存储过程
    CALL UpdateUserLocations(); (大概要几分钟到更久)
  5. 上一条执行结束后,告知志刚。ok的话执行 DROP PROCEDURE IF EXISTS UpdateUserLocations;