当前位置: 首页 > news >正文

GO学习笔记(4) strconv/time

目录

strconv包

string转其他的过程为Parse(解析)
其他转string的过程为Format(格式化)

1、string与bool之间的转换

  • string → \rightarrow bool strconv.ParseBool()

源码:

// ParseBool returns the boolean value represented by the string.
// It accepts 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False.
// Any other value returns an error.
func ParseBool(str string) (bool, error) {switch str {case "1", "t", "T", "true", "TRUE", "True":return true, nilcase "0", "f", "F", "false", "FALSE", "False":return false, nil}return false, syntaxError("ParseBool", str)
}
  • bool → \rightarrow string strconv.FormatBool()

源码

// FormatBool returns "true" or "false" according to the value of b.
func FormatBool(b bool) string {if b {return "true"}return "false"
}

2、string与int之间的转换

  • string → \rightarrow int func ParseInt(s string, base int, bitSize int) (i int64, err error)

源码:

func ParseInt(s string, base int, bitSize int) (i int64, err error)
//参数解释:
//s为原字符串
//base为解读字符串所采用的进制
//bitSize为存转换数字所用字节数 一般默认64即可
str := "101"
res, err := strconv.ParseInt(str, 2, 64)
fmt.Println(res, err) //5 <nil> 采用二进制解读该串

前缀符号:

str := "-101"//允许串存在前导符号(‘+’或‘-’)
res, err := strconv.ParseInt(str, 2, 64)
fmt.Println(res, err) //-5 <nil> 采用二进制解读该串

base为0:

str := "-0x101"
res, err := strconv.ParseInt(str, 0, 64)//如果base为零则通过s串推断,例如二进制前缀0b,八进制前缀0...(详解请查看源码)
fmt.Println(res, err) //-257(1+16^2) <nil> 采用16进制(0x为十六进制前缀)解读该串

简便方式(Atoi):与使用ParseInt()函数base为10,bitSize为64效果相同

str := "-101"
res, _ := strconv.Atoi(str)
fmt.Printf("%T %d\n", res, res)//int -101
  • int → \rightarrow string func FormatInt(i int64, base int) string
s := strconv.FormatInt(-257, 16)
fmt.Printf("%T %v\n", s, s) //string -101

简便方式(Itoa):与使用FormatInt()函数base为10效果相同

i := -345
res := strconv.Itoa(i)
fmt.Printf("%T %s\n", res, res)

time包

1、常用常量定义

在这里插入图片描述


2、Now()获取当前年月日时分秒

源码:

在这里插入图片描述

now := time.Now()
fmt.Println(now) //2024-09-05 22:09:12.0153971 +0800 CST m=+0.001031601
//+0800 表示东八区,即UTC时间加上8小时。中国大部分地区都位于东八区。
//CST China Standard Time
year := now.Year()
month := now.Month()
day := now.Day()
hour := now.Hour()
minute := now.Minute()
second := now.Second()
fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)//2024-09-05 22:06:19

3、Format()时间格式化

源码:
在这里插入图片描述

now := time.Now()
//layout参数是固定的2006-01-02 15:04:05 此时间为GO语言诞生的时间1月2号下午3点4分5秒
//用'/' 、':'、 '-'分割均可
fmt.Println(now.Format("2006-01-02 15:04:05"))//2024-09-05 22:35:57
fmt.Println(now.Format("2006/01/02 03:04"))    //2024/09/05 10:50

4、Parse()/ ParseInLocation()解析时间 str → \rightarrow Time对象

now := time.Now()
str := now.Format("2006-01-02 15:04:05")//func Parse(layout, value string) (Time, error)
t1, _ := time.Parse("2006-01-02 15:04:05", str)
fmt.Println(t1) //2024-09-08 11:44:01 +0000 UTC//func LoadLocation(name string) (*Location, error)
loc, _ := time.LoadLocation("Asia/Shanghai")
fmt.Printf("%T %v\n", loc, loc) //*time.Location Asia/Shanghai
//func ParseInLocation(layout, value string, loc *Location) (Time, error)
t2, _ := time.ParseInLocation("2006-01-02 15:04:05", str, loc)
fmt.Println(t2) //2024-09-08 11:44:01 +0800 CST

小结技巧:
首先ParseInLocation()方法需要一个*Location类型的参数,于是我们通过寻找time包下哪一个方法返回值类型为*Location,通过筛选后可以发现只有在这里插入图片描述最合适,因此完美契合。
全部时区列表


4、时间戳、时间戳 → \rightarrow Time对象

now := time.Now()
//时间戳Unix:1970.1.1 00:00:00 - 当下的一个秒数
fmt.Println(now.Unix())//1725777952//时间戳-->Time对象
timeobj := time.Unix(now.Unix(), 0)
fmt.Println(timeobj)//2024-09-08 14:45:52 +0800 CST

5、时间运算

now := time.Now()
fmt.Println(now) //2024-09-08 15:37:11.5696332 +0800 CST m=+0.000501801//加
r1 := now.Add(time.Hour)
fmt.Println(r1) //2024-09-08 16:37:11.5696332 +0800 CST m=+3600.000501801//两个时间之间的插值
r2 := now.Sub(r1)
fmt.Println(r2) //-1h0m0s//时间比较
fmt.Println(now.Equal(r1))  //false
fmt.Println(now.Before(r1)) //true
fmt.Println(now.After(r1))  //false

rand包

	//生成五个随机数for i := 0; i < 5; i++ {fmt.Println("i:", rand.Intn(10))}

现在在这里插入图片描述放法已经是一个待删的状态了,应该已经实现了完全随机,并不是伪随机了,所以我们不需要先拨种子了。

相关文章:

GO学习笔记(4) strconv/time

目录 strconv包1、string与bool之间的转换2、string与int之间的转换 time包1、常用常量定义2、Now&#xff08;&#xff09;获取当前年月日时分秒3、Format&#xff08;&#xff09;时间格式化4、Parse&#xff08;&#xff09;/ ParseInLocation&#xff08;&#xff09;解析时…...

课程管理系统-数据库-基于MySQL的数据库课程设计

目录 前言一、需求分析二、设计数据库模型1.实体关系图(ERD)2.表结构设计三、创建数据库和表四、插入数据五、查询数据六、更新和维护七、安全性与性能优化总结前言 设计一个数据库课程(或任何课程管理系统)时,我们首先需要明确系统的需求和目标。以下是一个基于MySQL的数…...

降维打击 华为赢麻了

文&#xff5c;琥珀食酒社 作者 | 积溪 真是赢麻了 华为估计都懵了 这辈子还能打这么富裕的仗&#xff1f; 其实在苹果和华为的发布会召开之前 我就知道华为肯定会赢 但我没想到 苹果会这么拉胯 华为这是妥妥的降维打击啊 就说这苹果iPhone 16吧 屏幕是变大了、颜色…...

[数据集][目标检测]汽车头部尾部检测数据集VOC+YOLO格式5319张3类别

数据集制作单位&#xff1a;未来自主研究中心(FIRC) 版权单位&#xff1a;未来自主研究中心(FIRC) 版权声明&#xff1a;数据集仅仅供个人使用&#xff0c;不得在未授权情况下挂淘宝、咸鱼等交易网站公开售卖,由此引发的法律责任需自行承担 数据集格式&#xff1a;Pascal VOC格…...

python 生成的代码,需要帮我生成一个直接在一台没有依赖的电脑上运行的 包

要创建一个可以在没有依赖的电脑上运行的包&#xff0c;你需要将你的代码和所有依赖项打包成一个可执行文件。对于Python项目&#xff0c;这通常意味着使用一些工具来打包你的代码和所有必要的库。以下是一些常用的工具和步骤&#xff1a; 确定依赖&#xff1a;首先&#xff0c…...

【Linux】操作系统与进程

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 &#x1f4cc;操作系统 &#x1f38f;操作系统的概念 &#x1f38f;设计操作系统的目的 &#x1f38f;操作系统对进程的管理 &#x1f579;️操作系统为什么…...

【Linux】 LTG:移动硬盘部署Ubuntu24.04

Ubuntu To Go 是一种便携式的 Ubuntu 操作系统解决方案&#xff0c;允许用户将 Ubuntu 系统安装在 USB 驱动器或其他可移动存储设备上。这样&#xff0c;用户可以在任何支持 USB 启动的计算机上运行 Ubuntu&#xff0c;而无需在本地硬盘上进行安装。 准备工作 移动硬盘&#x…...

Android的logcat日志详解

Android log系统 logcat介绍 logcat是android中的一个命令行工具&#xff0c;可以用于得到程序的log信息。下面介绍 adb logcat中的详细参数命令以及如何才能高效的打印日志&#xff0c;或把日志保存到我们指定的位置。 可以输入 adb logcat --help&#xff0c;查看一下一些简…...

【Linux】:信号的保存和信号处理

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来信号的保存和信号处理相关代码和知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入…...

深入理解Java虚拟机:Jvm总结-Java内存区域与内存溢出异常

第二章 Java内存区域与内存溢出异常 2.1 意义 对于C、C程序开发来说&#xff0c;程序员需要维护每一个对象从开始到终结。Java的虚拟自动内存管理机制&#xff0c;让java程序员不需要手写delete或者free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;但是如果…...

跨境电商必备保护账号的4个网络环境设置

在跨境电商的世界里&#xff0c;一个稳定可靠的网络环境就是你事业成功的关键&#xff01;但是&#xff0c;不稳定的IP很容易导致账号被封&#xff0c;让你的辛苦付之东流&#xff0c;相信许多小伙伴也经历过莫名其妙的账号封禁情况&#xff01; 为了让大家避免这种心痛的情况…...

Python+requests接口自动化测试框架实例教程

前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行的接口测试&#xff0c;后来&#xff0c;组内有人讲原先web自动化的测试框架移驾成接口的自动化框架&#xff0c;使用的…...

【网络安全】DNS重绑定原理详析

原创文章,不得转载。 文章目录 DNSDNS查询过程同源策略DNS重绑定攻击原理DNS重绑定攻击步骤DNS重绑定工具工具一工具二DNS 在网络中,访问网站实际上是通过其对应的 IP 地址实现的,然而,IP 地址往往难以记忆。因此,DNS(域名系统)应运而生。 DNS(Domain Name System)是…...

C语言初识编译和链接

目录 翻译环境和运行环境编译环境预编译编译词法分析语法分析语义分析 汇编 链接运行环境 翻译环境和运行环境 在ANSI C的任何⼀种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执⾏的机器指令&#xff08;⼆进制指令&…...

TrinityCore环境搭建

1)https://192.168.3.96:41797/soft/app root jianan2)mysql322bb8f85b0920d9 192.168.3.96 9f5c813fefbbc3aa3) su wow cd /home/wow/TrinityCore/TrinityCore-TDB335.22061/build cmake ../ -DCMAKE_INSTALL_PREFIX/home/wow/server3.5.5 #构建项目cmake ../ -DCMAKE_INSTALL…...

Proteus 仿真设计:开启电子工程创新之门

摘要&#xff1a; 本文详细介绍了 Proteus 仿真软件在电子工程领域的广泛应用。从 Proteus 的功能特点、安装与使用方法入手&#xff0c;深入探讨了其在电路设计、单片机系统仿真、PCB 设计等方面的强大优势。通过具体的案例分析&#xff0c;展示了如何利用 Proteus 进行高效的…...

microchip dspic3一些奇怪问题

UART初始化&#xff0c;导致一些MCU PIN输出低电平。 https://microchip.my.site.com/s/case/500V4000007jvz4IAA/detail 板子上电EEPROM读取不稳定&#xff0c;增加延时解决问题。 –If delay 1ms, will read EE Err –If delay 10ms, program and reset, will read EE err.…...

FinOps原则:云计算成本管理的关键

导语&#xff1a; FinOps 原则为我们提供了北极星&#xff08;North Star&#xff09;&#xff0c;在我们实践云财务管理时指导我们的活动。这些原则由 FinOps 基金会成员制定&#xff0c;并通过经验磨练出来。 北极星&#xff08;North Star&#xff09;的含义&#xff1a; …...

JavaScript之如何优化模板字符串的性能

在 JavaScript 中&#xff0c;优化模板字符串的性能可以从几个方面入手。模板字符串&#xff08;Template Literals&#xff09;是 ES6 引入的特性&#xff0c;它们使用反引号 () 包围&#xff0c;可以嵌入表达式并支持多行字符串。虽然模板字符串通常很方便&#xff0c;但在性…...

不能将类型“null”分配给类型“number | undefined”。ts(2322)

错误解释&#xff1a; 这个TypeScript错误表明你正在尝试将null赋值给一个预期为number类型或undefined类型的变量。在TypeScript中&#xff0c;null和undefined是有效的值&#xff0c;但通常我们希望它们与number类型不兼容。 解决方法&#xff1a; 检查导致错误的赋值语句&…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...