GO学习笔记(4) strconv/time

news2024/9/21 14:28:45

目录

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, nil
	case "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))
	}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

anaconda启动jupyter notebook

1.在Windows搜索框搜索anaconda prompt点击打开 2.然后输入命令jupyter notebook 3.在这个页面编写你的程序

基于Java的宿舍报修管理系统的设计与实现(论文+源码)_kaic

基于Java的宿舍报修管理系统的设计与实现(论文源码)_kaic 摘  要 随着教育改革‎‏的不断‎‏深入&#xff0c;‎‏学校宿‎‏舍的管‎‏理体系‎‏也在不‎‏断地完‎‏善&#xff0c;校园后勤服务是学校管理的重要工作&#xff0c;学校提供优秀的后勤服务&#xff0c;能提…

【Jupyter Notebook】安装与使用

打开Anaconda Navigator点击"Install"(Launch安装前是Install)点击"Launch"点击"File"-"New"-"Notebook"​ 5.点击"Select"选择Python版本 6.输入测试代码并按"Enter+Shift"运行代码: 代码如下: …

C++万字解析类和对象(上)

1.类的定义 class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。 为了区分成员变量&…

Linux(RedHat或CentOS)下如何开启telnet服务

一、Telnet服务介绍 Telnet协议是TCP/IP协议族中的一员&#xff0c;是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序&#xff0c;用它连接到服务器。终端使用者可以在telnet程序中输入…

【STM32】串口

1.串口-printf 使用printf函数向串口发送东西 使用微库&#xff0c;用到了printf, 但是我们发现是不能发送的 因为底层printf是fputc,我们需要自己实现 后面FILE*P不用管&#xff0c;在fputc中调用 第一个参数为uart1的句柄 第二个为要输出的字符 第三个为一次要发送几…

【c++进阶[五]】list相关接口介绍及list和vector的对比

&#x1f493;博主CSDN主页::Am心若依旧&#x1f493; ⏩专栏分类c从入门到精通⏪ &#x1f69a;代码仓库:青酒余成&#x1f69a; &#x1f339;关注我&#x1faf5;带你学习更多c   &#x1f51d;&#x1f51d; 1.前言 本章重点 本章重点讲解list的接口函数的熟悉&#xf…

W11系统电脑便捷设置

1【win11】取消右键菜单“更多选项”&#xff0c;直接展示完整右键菜单 取消右键菜单“更多选项”&#xff0c;直接展示完整右键菜单 (本质上是修改注册表&#xff0c;通过命令行的方式更加直接快捷) 只需要使用 winR 输入cmd 打开命令行&#xff0c;然后输入以下指令&#xf…

使用ChatGPT润色论文的10大分步技巧,效果立竿见影

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。 撰写学术论文确实是一项非常具有挑…

HTML 转 PDF API 接口

HTML 转 PDF API 接口 网络工具 / 文件处理 支持网页转 PDF 高效生成 PDF / 提供永久链接。 1. 产品功能 超高性能转换效率&#xff1b;支持将传递的 HTML 转换为 PDF&#xff0c;支持转换 HTML 中的 CSS 格式&#xff1b;支持传递网站 URL&#xff0c;直接转换页面成对应的 …

C++笔记20•数据结构:哈希(Hash)•

哈希 1.无序的关联式容器&#xff08;unordered_map&unordered_set&#xff09; unordered_map与unordered_set几乎与map与set是一样的&#xff0c;只是性能unordered_map与unordered_set比map与set更优一些。还有就是unordered_map与unordered_set是无序的&#xff0c;…

梳理2024年,螺丝钉们爱用的3款剪辑软件

这年头&#xff0c;视频到处都是&#xff0c;就跟天上的星星一样数不清。不管你是公司里的新面孔&#xff0c;还是职场上的老狐狸&#xff0c;学会怎么剪视频&#xff0c;就好比找到了赢的秘诀。不管是给上司汇报工作&#xff0c;展示你的产品&#xff0c;还是自己搞点小视频记…

C#顺序万年历自写的求余函数与周位移算法

static int 返回月的天数(int 年, int 月){return (月 2 ?(((年 % 4 0 && 年 % 100 > 0) || 年 % 400 0) ? 29 : 28) :(((月 < 7 && 月 % 2 > 0) || (月 > 7 && 月 % 2 0)) ? 31 : 30));}static int 返回年总天数(int 年, int 标 …

Mac设置文件夹的显示方式:独立窗口显示或者标签页显示

目录 00 Mac文件夹的两种显示方式  0.1 独立窗口显示   0.2 标签页显示 01 独立窗口显示  02 标签页显示 00 Mac文件夹的两种显示方式 0.1 独立窗口显示 0.2 标签页显示 01 独立窗口显示 系统偏好设置System Setting -> 程序坞Desktop & Dock -> 窗口W…

【一文读懂】北斗卫星导航系统介绍

前言 本文来自鲜枣课堂。 本文是关于北斗卫星导航系统的详细介绍&#xff0c;主要阐述了北斗系统的组成、功能、发展历程以及在全球范围内的应用和影响。以下是文件的核心内容提炼&#xff1a; 系统概述&#xff1a; 二级要点关键短语&#xff1a;全球卫星导航系统 北斗卫星…

Learn ComputeShader 11 Star Glow Effect

这次要使用到顶点和片段着色器。同样是制作屏幕后处理效果。 下面是一开始的效果&#xff0c;只是一个循环播放的粒子系统。 我们首先要对源图像的亮部区域进行提亮&#xff0c;然后进行模糊添加光芒。然后进行混合&#xff0c;最后进行一次合成 我们需要创建一些临时纹理来存…

基于Java+SpringBoot+Vue+MySQL的智能菜谱推荐管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的智能菜谱推荐管理系统【附源码文档】、…

ML18_EM(Expectation-Maximization)算法详解

1. 梯度上升法和坐标上升法的比较 “梯度上升法”&#xff08;Gradient Ascent Method&#xff09;和“坐标上升法”&#xff08;Coordinate Ascent Method&#xff09;都是优化算法的一部分&#xff0c;用于求解优化问题中的最大值。它们分别基于不同的思路来更新参数以达到目…

51单片机的倒车雷达测距设计【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器模块超声波模块按键等模块构成。适用于倒车雷达测距、超声波测距、汽车防撞报警等相似项目。 可实现功能: 1、LCD1602实时显示环境温度和距离&#xff1b; 2、温度传感器DS18B20采集温度信息&#xff1…

【扇贝编程】使用Selenium模拟浏览器获取动态内容笔记

文章目录 selenium安装 selenium下载浏览器驱动 获取数据处理数据查找一个元素查找所有符合条件的元素 控制浏览器 selenium selenium是爬虫的好帮手&#xff0c; 可以控制你的浏览器&#xff0c;模仿人浏览网页&#xff0c;从而获取数据&#xff0c;自动操作等。 我们只要让…