Go语言初篇
Go语言知识点总结
目录
Go语言开发文档:https://studygolang.com/pkgdoc
GO语言中文网:https://studygolang.com/
深度开源:https://www.open-open.com/
KanCloud看云:https://www.kancloud.cn/Go资料:https://studygolang.com/articles/1450?fr=sidebar
个人资料:https://pan.baidu.com/s/1O9RLHCW9FXglYCRHWIslLA 密码:ebg8
Go-开发环境
GoLand IDE:https://www.jetbrains.com/go/
IDE破解:https://www.cnblogs.com/-wenli/p/10739315.html
文件相关快捷键:
CTRL+E,打开最近浏览过的文件。
CTRL+SHIFT+E,打开最近更改的文件。
CTRL+N,可以快速打开struct结构体。
CTRL+SHIFT+N,可以快速打开文件。
代码格式化:
CTRL+ALT+T,可以把代码包在一个块内,例如if{…}else{…}。
CTRL+ALT+L,格式化代码。
CTRL+空格,代码提示。
CTRL+/,单行注释。CTRL+SHIFT+/,进行多行注释。
CTRL+B,快速打开光标处的结构体或方法(跳转到定义处)。
CTRL+“+/-”,可以将当前方法进行展开或折叠。
查找和定位
CTRL+R,替换文本。
CTRL+F,查找文本。
CTRL+SHIFT+F,进行全局查找。
CTRL+G,快速定位到某行。
代码编辑
ALT+Q,可以看到当前方法的声明。
CTRL+Backspace,按单词进行删除。
SHIFT+ENTER,可以向下插入新行,即使光标在当前行的中间。
CTRL+X,删除当前光标所在行。
CTRL+D,复制当前光标所在行。
ALT+SHIFT+UP/DOWN,可以将光标所在行的代码上下移动。
CTRL+SHIFT+U,可以将选中内容进行大小写转化。
IED快捷键
Go-语言基础
Go-标准库
1.os库使用
package main import (
"fmt"
"os"
) func main(){
//获得当前工作目录:默认当前工程目录
dir,err := os.Getwd()
fmt.Print(dir)
fmt.Print(err) //获得指定环境变量
//paths := os.Getenv(key:"Path")
//goroot := os.Getenv(key:"GOROOT")
//fmt.Print(paths)
//fmt.Print(goroot) //修改文件访问时间和修改时间
//err2 := os.Chtimes(
// name:"",
// time.Now().AddDate(years:-1,months:0,days:0)
// ) //获得所有环境变量
envs := os.Environ()
for _,env := range envs{
fmt.Print(env)
} //在网络中的主机名
hostname,err := os.Hostname()
if err == nil {
fmt.Print(hostname)
}else {
fmt.Print("出错了")
} //获得系统的临时文件夹路径:临时数据的保存路径
fmt.Print(os.TempDir()) //判断某字符是否路径分隔符
fmt.Print("//是路径分隔符吗?",os.IsPathSeparator('\\'))
//fmt.Print("\\是路径分隔符吗?",os.IsPathSeparator(c:'\'))
fmt.Print("$是路径分隔符吗?",os.IsPathSeparator('\\')) //fmt.Print(os.IsPathSeparator(c:'\\'))
//fmt.Print(os.IsPathSeparator(c:'$')) //获得文件信息
fileInfo,err := os.Stat("C:/users/...")
if err == nil {
fmt.Print(fileInfo)
}else {
fmt.Print("出错了")
}
}
01: 获取当前时间 dateTime := time.Now()
fmt.Println(dateTime)
02: 获取年 月 日 时 分 秒 纳秒 year := time.Now().Year() //年 fmt.Println(year) month := time.Now().Month() //月
fmt.Println(month) day := time.Now().Day() //日
fmt.Println(day) hour := time.Now().Hour() //小时
fmt.Println(hour) minute := time.Now().Minute() //分钟
fmt.Println(minute) second := time.Now().Second() //秒
fmt.Println(second) nanosecond := time.Now().Nanosecond() //纳秒
fmt.Println(nanosecond)
03: 获取当前时间戳 timeUnix := time.Now().Unix() //单位秒
timeUnixNano := time.Now().UnixNano() //单位纳秒 fmt.Println(timeUnix)
fmt.Println(timeUnixNano)
04: 将时间戳格式化 fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
05: 时间戳转为go格式的时间 var timeUnix int64 = 1562555859
fmt.Println(time.Unix(timeUnix,0)) // 之后可以用Format 比如
fmt.Println(time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05"))
06: str格式化时间转时间戳 t := time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local).Unix() fmt.Println(t)
时间的计算
01: 获取今天0点0时0分的时间戳 currentTime := time.Now()
startTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, currentTime.Location())
fmt.Println(startTime)
fmt.Println(startTime.Format("2006/01/02 15:04:05"))
02: 获取今天23:59:59秒的时间戳 currentTime := time.Now()
endTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 23, 59, 59, 0, currentTime.Location())
fmt.Println(endTime)
fmt.Println(endTime.Format("2006/01/02 15:04:05"))
03: 获取1分钟之前的时间 m, _ := time.ParseDuration("-1m")
result := currentTime.Add(m) fmt.Println(result)
fmt.Println(result.Format("2006/01/02 15:04:05"))
04: 获取1小时之前的时间 m, _ := time.ParseDuration("-1h")
result := currentTime.Add(m)
fmt.Println(result)
fmt.Println(result.Format("2006/01/02 15:04:05"))
05: 获取1分钟之后的时间 m, _ := time.ParseDuration("1m")
result := currentTime.Add(m) fmt.Println(result)
fmt.Println(result.Format("2006/01/02 15:04:05"))
06: 获取1小时之后的时间 m, _ := time.ParseDuration("1h")
result := currentTime.Add(m)
fmt.Println(result)
fmt.Println(result.Format("2006/01/02 15:04:05"))
07 :计算两个时间戳 afterTime, _ := time.ParseDuration("1h")
result := currentTime.Add(afterTime) beforeTime, _ := time.ParseDuration("-1h")
result2 := currentTime.Add(beforeTime) m := result.Sub(result2)
fmt.Printf("%v 分钟 \n", m.Minutes()) h := result.Sub(result2)
fmt.Printf("%v小时 \n", h.Hours()) d := result.Sub(result2)
fmt.Printf("%v 天\n", d.Hours()/24)
08: 判断一个时间是否在一个时间之后 stringTime, _ := time.Parse("2006-01-02 15:04:05", "2019-12-12 12:00:00")
beforeOrAfter := stringTime.After(time.Now()) if true == beforeOrAfter {
fmt.Println("2019-12-12 12:00:00在当前时间之后!")
} else {
fmt.Println("2019-12-12 12:00:00在当前时间之前!")
}
09: 判断一个时间相比另外一个时间过去了多久 startTime := time.Now()
time.Sleep(time.Second * 5) fmt.Println("离现在过去了:", time.Since(startTime))
2.命令行解析
package main import (
"flag"
"fmt"
"os"
)
//先编译 go build -o args.exe args_test.go
//执行 args.exe -name ..
func main() {
//第一种
//获取命令行参数
//fmt.Print(os.Args)
for i,v := range os.Args{
fmt.Print(i,v)
} //第二种
//自定义命令行参数
//定义参数
//String代表获取的参数类型为字符串,参数的名字为-name,值默认为空,usage为提示
namePtr := flag.String("name", "", "姓名")
agePtr := flag.Int("age",18,"年龄")
rmbPtr := flag.Float64("rmb",10000,"资产")
alivePtr := flag.Bool("alive",true,"是否健在") //解析获取参数,丢入参数的指针中
flag.Parse()
fmt.Print(*namePtr,*agePtr,*rmbPtr,*alivePtr) //第三种
//var name *string 这里在栈里面占了名字,但是没有分配内存空间,所以没有地址
// //flag.StringVar(name,"name", "", "姓名") var name string//这里是有地址的
var age int
var rmb float64
var alive bool
flag.StringVar(&name,"name", "", "姓名")
flag.IntVar(&age,"age",18,"年龄")
flag.Float64Var(&rmb,"rmb",10000,"资产")
flag.BoolVar(&alive,"alive",true,"是否健在") flag.Parse()
fmt.Print(name,age,rmb,alive) }
3.time库使用
package main import (
"time"
"fmt"
) func main(){ //本地时间
nowTime := time.Now() //年月日
year := nowTime.Year()
fmt.Printf("%s",year)
month := nowTime.Month()
fmt.Printf("%s",month)
y,m,d := nowTime.Date()
fmt.Printf("%d:%d:%d",y,m,d) //周月年中的第几天
day := nowTime.Day()
fmt.Printf("%d",day)
yearDay := nowTime.YearDay()
fmt.Printf("%d",yearDay)
weekDay := nowTime.Weekday()
fmt.Printf("%d",weekDay) //时分秒
fmt.Printf("%s",nowTime.Hour())
fmt.Printf("%s",nowTime.Minute())
fmt.Printf("%s",nowTime.Second())
fmt.Printf("%s",nowTime.Nanosecond()) //创建时间
date := time.Date(2019,time.September,8,15,0,0,0,time.Now().Location())
fmt.Printf("%s",date) //Add方法和Sub方法是相反的
//获取t0和t1的时间距离d是使用Sub
//将t0加d获取t1就是使用Add方法 now := time.Now() //一天之前
duration,_ := time.ParseDuration("-24h0m0s")
fmt.Printf("%s",now.Add(duration)) //一周之前
fmt.Printf("%s",now.Add(duration * 7)) //一月之前
fmt.Printf("%s",now.Add(duration * 30)) //计算时间差
fmt.Printf("%s",now.Sub(now.Add(duration))) }
Go-面向对象
Go-并发
Go-数据库
Go-web框架
Go语言初篇的更多相关文章
- JNI的使用总结初篇
前言:以下内容是个人在写JNI Demo前后进行查找理解总结得出的一些结论,如有错误的地方希望路过的朋友能够指正. 一.JNI是Java native interface的简称,目前就我所知这类方法的 ...
- 用Visual Studio Code Debug世界上最好的语言(Mac篇)
用Visual Studio Code Debug世界上最好的语言(Mac篇) 首先,你要有台Macbook Pro,接着才继续看这个教程. PS:Windows用户看这里用Visual Studio ...
- C语言扫盲篇
C语言扫盲篇 作者:尹正杰 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 一.什么是C语言 C 语言是一种通用的高级语言,最初是由 ...
- C语言函数篇(二)函数参数基础设计
形参实现一种数据传入的接口 ,由 实参 拷贝给 形参. 拷贝!!!!!!!!!!! 例1: void func(int tmp){ //意图是实现传进来的参数 +1 tmp++; } int mian ...
- 前端——语言——Core JS——《The good part》读书笔记——初篇
本书是一本经典,优秀的JS书籍. 目的 在书籍中作者多次提及本书的目的,让读者去发现语言中的精华部分,避免糟粕部分,提高代码的编写质量.简述为取其精华去其糟粕. 本书的内容只涉及到Core JS部分, ...
- 数据库语言——SQL——基础部分——初篇
概述 SQL全称为Structured Query Language,是关系型数据库的语言标准,它并不与特定的数据库商品类型有关,例如Mysql,Oracle,DB2等等都可以使用SQL语言,它与特定 ...
- 深入研究C语言 第一篇(续)
没有读过第一篇的读者,可以点击这里,阅读深入研究C语言的第一篇. 问题一:如何打印变量的地址? 我们用取地址符&,可以取到变量的偏移地址,用DS可以取到变量的段地址. 1.全局变量: 我们看到 ...
- ES6学习一 JS语言增强篇
一 背景 JavaScript经过二十来年年的发展,由最初简单的交互脚本语言,发展到今天的富客户端交互,后端服务器处理,跨平台(Native),以及小程序等等的应用.JS的角色越来越重要,处理场景越来 ...
- 嵌入式LInux之C语言提升篇---Skr Skr Up Up
嵌入式C语言提升 致敬:每一个奋斗的人! Up Up UpC语言常见编译错误1.预处理错误 -E 1-1 找不到源文件错误 自己定义头文件 使用 “xxx.h” 搜索的目录 ./ ...
随机推荐
- Vue学习笔记七:Vue中的样式
目录 两种样式 class样式 内联样式 两种样式 Vue中使用样式方式有两种,一种是class样式,一种是内联样式也就是style class样式 class样式使用的方式有5种,HTML如下 &l ...
- 利用GitHub Pages和Bootstrap创建个人网站
作为一名想要想找前端实习的即将毕业的学生,我最近意识到拥有个人网页会使自己的简历更容易被注意到.本文主要是我创建过程及个人心得,有些操作我也是第一次,所以难免在解释中会有错误.另外说明一下,我的电脑是 ...
- JDK常用命令行工具(基于JDK10)
虽然我是在jdk10环境下, 但是大体上和jdk8是差不多的. 总共有这么多 本来想着一口气把所有命令都边学边总结一下的, 结果发现....有些还真的不是很常用....或者说我这个水平还接触不到那么多 ...
- [面试]future模式
Future模式 什么是future模式? 传统单线程环境下,调用函数是同步的,必须等待程序返回结果后,才可进行其他处理. Futrue模式下,调用方式改为异步. Futrue模式的核心在于:充分利用 ...
- 基于jeesite的cms系统(二):整体设计
一.菜单设计 在系统管理-菜单管理中可以设置内容管理菜单(自动生成) 注意:归属模块应属于核心模块core.如果新加的的菜单设置为内容管理模块cms,系统下次重启时会重置本次设置,具体原因不详. 二. ...
- 洛谷红名+AC150祭
emmmm没什么想说的,随便放个图吧23333(逃~
- (七)File 文件的操作
一.文件读写模式 1.文件的几种模式: 格式:f=open("文件名","模式",encode="utf-8") #文件的只读模式 f1=o ...
- Netty学习路线
预研时间170517-170519 投入时间:约10h 理解度:入门①前置基础:了解基本网络协议和通信方式[图解HTTP]http://download.csdn.net/detail/niehanm ...
- springboot格式化时间
使用@RestController注解,返回的java对象中若含有date类型的属性,则默认输出为TIMESTAMP时间戳格式,可以在配置文件加入下面配置 spring.jackson.date-fo ...
- (二)ORB描述子提取源码思路与实现
ORBSLAM2中ORB特征提取的特点 ORBSLAM2中通过对OpenCV中的ORB特征点提取类进行修改,对图像进行分块提取,而后划分节点,使得每个节点中保存的特征点性能是该节点所有特征点中最好的. ...