go 使用方式

2023-11-11

一、GO基本概念

Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由Robert Griesemer (罗伯特.格利茨默),Rob Pike(罗伯.派克),>

  • Ken Thompson(肯.汤普森)主持开发,后来还加入了lan Lance Taylor(伊恩:兰斯·>泰勒), Russ Cox(鲁斯.考斯)等人,并最终于2009年11月开源,在2012年早些时>候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的>社区。
  • Rob Pike:曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8 字元编码。
  • Robert Griesemer:在开发Go之前是Google V8、Chubby和HotSpot JVM的主要
    贡献者,曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。

二、GO语言的特点

兼顾C语言级别的编译、运行效率,容易部署,PHP级别的开发效率

  • 强大的标准库,内置高效的垃圾回收机制
  • 简单的并发编程,goroutine和channel极易上手
  • 静态类型语言,拥有强大的编译检查、严格的编码规范
  • 背景强大,由三位骨灰级大师创造,google公司运营维护

三、GO语言前景

在云计算、微服务、基础后端软件上具有强大优势
得到诸多大厂的"青睐",很多部门由java转golang,新公司甚至直接使用golang
优秀开源项目不断涌现,有docker和k8s

四、GO环境部署

1、安装go

官方下载网址:golang.google.cn

2、配置环境变量

3、环境变量设置完成之后查看

go version

五、go 语法操作

1//将整形转成字符串
 strconv.Itoa()
 //字符串转int 类型
 strconv.Atoi()

2、截取参数
//通过下标找到位置截取 
tracer := "死神来了, 死神bye bye"
comma := strings.Index(tracer, ", ")
pos := strings.Index(tracer[comma:], "死神")
fmt.Println(comma, pos, tracer[comma+pos:])
输出:
	3 死神bye bye

3//时间格式处理
//当前时间
now := time.Now( )
fmt.PrintIn(now)
//时间戳,单位秒
seconds stamp := now.Unix(fmt.PrintIn( seconds stamp)
//时间戳,单位纳秒 1秒=le3毫秒=le9纳秒fmt.PrintIn(now.UnixNano( ))
//时间戳,单位毫秒
fmt.PrintIn(now.UnixNano( ) / le6)//只输出年,其他字段类似
fmt.Printin(now.Year( ))
//只输出月
fmt.PrintIn(now.Month( ))
//只输出天
fmt.PrintIn(now.Day( ))
//只输小时
fmt.PrintIn(now.Hour( ))
//一年的第几天
fmt.PrintIn(now.YearDay( ))
[/年月日
fmt.PrintIn(now.Date( ))
//时分秒
fmt.PrintIn(now.Clock( ))


//时间转时间戳,单位秒
seconds stamp := now.Unix()
//时间转字符串,时间格式化,模板为2006-01-02 15:04:05,区别为java中yyyy-MM-dd HH:mm:ss//解析在方法time.format.nextStdChunk(),用上符号表示年月日等,是因为各字段是互斥的,具体可以看源码fmt.Printin(now.Format("2006-01-02 15:04:05")) //2019-07-17 18:43:16
//时间戳转时间
fmt.Println( time.Unix( seconds_stamp, 0 ))
/字符串转时间
fmt.Println(time.Parse("2006-01-02 15:04:05""2019-07-01 08:18:18"))

//自定义时间段timeDur := time.Duration(10)*time.Second + time.Duration(1)*time.Minutefmt.PrintIn(timeDur)
//时间相加nowAddTime := now.Add( timeDur )fmt.PrintIn(nowAddTime )
//时间相减,时间差(时间段)
diff := nowAddTime.Sub( now)
fmt.Println(diff) //1m10s
fmt.Println(diff.Hours( )) //分为单位显示时间差,0.019444444444444445fmt.Println(diff.Minutes()) //分为单位显示时间差、1.1666666666666667fmt.Println(diff.Seconds( )) //秒为单位显示时间差,70
//年月日添加
fmt.Println(nowAddTime.AddDate(1,-9,3)) //2019-10-20 18:55:56.654503204 +0800 CS

timeDur := time.Duration(10)xtime.Second + time.Duration(1)*time.MinutenowAddTime := now.Add( timeDur )
//时间比较
//时间之前比较
fmt.PrintIn(nowAddTime.After(now)) //true
//时间之后比较
fmt.PrintIn(nowAddTime.Before(now)) //false
//时间相等比较
fmt.Printin(now.Equal(now)) //true

//休眠1秒
time.Sleep(time.Second*1)

六、go中validate中的验证规则

required    //这将验证该值不是数据类型的默认零值。数字不为0,字符串不为 " ", slices, maps, pointers, interfaces, channels and functions 不为 nil
isdefault    //这验证了该值是默认值,几乎与所需值相反。
len=10    //对于数字,长度将确保该值等于给定的参数。对于字符串,它会检查字符串长度是否与字符数完全相同。对于切片,数组和map,验证元素个数。
max=10    //对于数字,max将确保该值小于或等于给定的参数。对于字符串,它会检查字符串长度是否最多为该字符数。对于切片,数组和map,验证元素个数。
min=10
eq=10    //对于字符串和数字,eq将确保该值等于给定的参数。对于切片,数组和map,验证元素个数。
ne=10    //和eq相反
oneof=red green (oneof=5 7 9)    //对于字符串,整数和uint,oneof将确保该值是参数中的值之一。参数应该是由空格分隔的值列表。值可以是字符串或数字。
gt=10    //对于数字,这将确保该值大于给定的参数。对于字符串,它会检查字符串长度是否大于该字符数。对于切片,数组和map,它会验证元素个数。
gt    //对于time.Time确保时间值大于time.Now.UTC()
gte=10    //大于等于
gte    //对于time.Time确保时间值大于或等于time.Now.UTC()
lt=10    //小于
lt    //对于time.Time确保时间值小于time.Now.UTC()
lte=10    //小于等于
lte    //对于time.Time确保时间值小于等于time.Now.UTC()
----

unique    //对于数组和切片,unique将确保没有重复项。对于map,unique将确保没有重复值。
alpha    //这将验证字符串值是否仅包含ASCII字母字符
alphanum    //这将验证字符串值是否仅包含ASCII字母数字字符
alphaunicode    //这将验证字符串值是否仅包含unicode字符
alphanumunicode    //这将验证字符串值是否仅包含unicode字母数字字符
numeric    //这将验证字符串值是否包含基本数值。基本排除指数等...对于整数或浮点数,它返回true。
hexadecimal    //这将验证字符串值是否包含有效的十六进制
hexcolor    //这验证字符串值包含有效的十六进制颜色,包括#标签(#)
rgb    //这将验证字符串值是否包含有效的rgb颜色
rgba    //这将验证字符串值是否包含有效的rgba颜色
hsl    //这将验证字符串值是否包含有效的hsl颜色
hsla    //这将验证字符串值是否包含有效的hsla颜色
email    //这验证字符串值包含有效的电子邮件这可能不符合任何rfc标准的所有可能性,但任何电子邮件提供商都不接受所有可能性
file    //这将验证字符串值是否包含有效的文件路径,并且该文件存在于计算机上。这是使用os.Stat完成的,它是一个独立于平台的函数。
url    //这会验证字符串值是否包含有效的url这将接受golang请求uri接受的任何url,但必须包含一个模式,例如http://或rtmp://
uri    //这验证了字符串值包含有效的uri。这将接受uri接受的golang请求的任何uri
base64    //这将验证字符串值是否包含有效的base64值。虽然空字符串是有效的base64,但这会将空字符串报告为错误,如果您希望接受空字符串作为有效字符,则可以将此字符串与omitempty标记一起使用。
base64url    //这会根据RFC4648规范验证字符串值是否包含有效的base64 URL安全值。尽管空字符串是有效的base64 URL安全值,但这会将空字符串报告为错误,如果您希望接受空字符串作为有效字符,则可以将此字符串与omitempty标记一起使用。
btc_addr    //这将验证字符串值是否包含有效的比特币地址。检查字符串的格式以确保它匹配P2PKH,P2SH三种格式之一并执行校验和验证
btc_addr_bech32    //这验证了字符串值包含bip-0173定义的有效比特币Bech32地址(https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki)特别感谢Pieter Wuille提供的参考实现。
eth_addr    //这将验证字符串值是否包含有效的以太坊地址。检查字符串的格式以确保它符合标准的以太坊地址格式完全验证被https://github.com/golang/crypto/pull/28阻止
contains=@    //这将验证字符串值是否包含子字符串值
containsany=!@#?    //这将验证字符串值是否包含子字符串值中的任何Unicode code points。
containsrune=@    //这将验证字符串值是否包含提供的符文值。
excludes=@    //这验证字符串值不包含子字符串值。
excludesall=!@#?    //这将验证字符串值在子字符串值中是否包含任何Unicode code points。

六、以下是几个Go语言的开源框架:

Beego:一个开源的、高性能的Web框架。
Buffalo:快速Web开发框架。
Echo:高性能、极简的Web框架。
Gin:HTTP Web框架,提供Martini风格的API但具有更好的性能。
Iris:发展最快的Go Web框架,提供完整的MVC功能并面向未来。
Revel:一个高生产率的全栈Go语言Web框架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go 使用方式 的相关文章

  • 接口测试工具soapUI

    1 soapUI安装及破解 参考 http blog csdn net liuchangxin1982 article details 47614625 1 安装方法 先下载SOAPUI 我这里用的是5 1 2 PRO 版 下载路径 htt

随机推荐

  • Git下载、安装及环境配置(超详细)

    本文首发自个人自有博客 FaxMiao个人博客 一个关注Web前端开发技术 关注用户体验 记录前端点滴 坚持更多原创 为大家提供高质量技术博文 本文主要介绍下Git的下载 安装及基本配置 予以初学者朋友帮助 更快的了解Git基础知识和快速使
  • Mysql5.7.41windows安装

    Mysql5 7 41windows安装 Mysql5 7 41windows安装 Mysql5 7 41官方下载 mysql安装 配置PATH路径 任意位置打开cmd都可以连接Mysql 环境验证 并登录 友情链接 Mysql5 7 41
  • 利用Fastjson进行泛型的序列化和反序列化

    public class SerialClass
  • qt下QString转换为const char*字符串

    概述 本文直在说明将QString类型的变量转换为const char 类型 实现 可以采用下面的方式来实现 QString toStdString c str 示例 下面是一个示例 const QString msg nis你好 cons
  • 10个Python爬虫入门实例,建议收藏!!

    1 爬取强大的BD页面 打印页面信息 第一个爬虫示例 爬取百度页面 import requests 导入爬虫的库 不然调用不了爬虫的函数 response requests get http www baidu com 生成一个respon
  • STM32 之八 在线升级(IAP)超详细图解 及 需要注意的问题解决

    IAP 是啥 IAP In Application Programming 即在应用编程 也就是用户可以使用自己的程序对MCU的中的运行程序进行更新 而无需借助于外部烧写器 其实ST官网也给出了IAP的示例程序 感兴趣的可以直接去官网搜索
  • 【PHPMailer SMTP connect() failed】

    PHPMailer发送邮件 报错 SMTP connect failed 第一种情况 端口问题 现在一般使用的就是ssl的端口465 第二种情况 参数里面有一个password参数 注意这里是授权码 不是邮箱登录密码
  • 3、34道MySQL练习题及答案

    作业 取得每个部门最高薪水的人员名称 第一步 取得每个部门最高薪水 按照部门编号分组 找出每一组最大值 select deptno max sal maxsal from emp group by deptno deptno maxsal
  • 微信小程序项目 npm安装构建

    project config json文件 setting 中增加 packNpmManually true packNpmRelationList packageJsonPath package json miniprogramNpmDi
  • 【笔记总结】C陷阱与缺陷

    第一章 词法 陷阱 是赋值运算符 是比较运算符 赋值运算符的优先级要低于逻辑运算符 和 的优先级要高于 运算符 比较运算符的结果只可能是0或者1 不可能小于0 字符是用单引号引起的实际代表一个整数 整数值对应于该字符在编译器采用的字符集的序
  • Zabbix 监控 CPU 使用率

    system cpu util
  • Delphi2009控件的安装

    delphi2009控件的安装和delphi7的有很大的差别 1 控件包 File gt Open gt 打开控件的包文件 gt project manager gt 右键 gt Install 2 PAS文件 New gt Package
  • 红帽Redhat—Linux基本命令行使用

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 什么是shell 二 基本命令 1 命令访问 2 参数 命令的作用对象 3 配置主机名 4 修改系统语言 5 用户名密码管理 6 cat 7 rm 删除文件命令
  • linux sh查看wifi状态,adb结合wpa_cli查看wifi状态命令集

    1 status 查看当前的WIFI状态 adb shell wpa cli iwlan0 g android wpa wlan0 IFNAME wlan0 status bssid 70 62 b8 62 2e c4 一个长度为48位二进
  • LR为什么用sigmoid函数,这个函数有什么优点和缺点?为什么不用其他函数?

    一 功能的基本性质 首先 Sigmoid的公式形式 公式图像 该函数的基本属性 定义域 值范围 1 1 1 1 函数是域内的连续且平滑的函数 它可以在任何地方被引导 并且导数是 f x f x 1 f x 最早的Logistic功能由Pie
  • python如何实现可视化热力图

    这篇文章主要介绍了python如何实现可视化热力图 小编觉得挺不错的 现在分享给大家 也给大家做个参考 一起跟随小编过来看看吧 热力图 1 利用热力图可以看数据表里多个特征两两的相似度 参考官方API参数及地址 seaborn heatma
  • IC617

    tip 个人日常笔记 解决的问题 导入一个由很多MOS晶体管组成的cdl网表 网表部分内容如下图所示 SUBCKT 512x2ESDA8 指的是 接下来将对512x2ESDA8这一模块进行定义 紧跟在后面的 A 8 A 7 是对这一模块管脚
  • 【Java多数据源实现教程】实现动态数据源、多数据源切换方式

    前言 本文为 Java多数据源实现教程 相关知识 由于自己最近在做导师的项目的时候需要使用这种技术 于是自学了相关技术原理与实现 并将其整理如下 具体包含 多数据源的典型使用场景 包含业务复杂场景 读写分离场景 多数据源实现原理及实现方法
  • JavaScript教程,零基础到入门,switch语句,case分组,类型,函数声明,局部变量,外部变量,参数,返回值,函数命名,

    switch 语句 switch 语句可以替代多个 if 判断 switch 语句为多分支选择的情况提供了一个更具描述性的方式 语法 switch 语句有至少一个 case 代码块和一个可选的 default 代码块 就像这样 switch
  • go 使用方式

    一 GO基本概念 Go是一个开源的编程语言 它能让构造简单 可靠且高效的软件变得容易 Go是从2007年末由Robert Griesemer 罗伯特 格利茨默 Rob Pike 罗伯 派克 gt Ken Thompson 肯 汤普森 主持开