当前位置: 首页 > 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; 检查导致错误的赋值语句&…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...