golang

GoLang之命令行使用方法——flag package

烂漫一生 提交于 2019-12-05 01:20:47
2013-12-08 wcdj go语言通过使用标准库里的flag包来处理命令行参数。 Package flag implements command-line flag parsing. http://golang.org/pkg/flag/ http://golang.org/pkg/ 几点注意事项: 1,通过flag.String(), Bool(), Int()等方式来定义命令行中需要使用的flag。 2,在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。 3,命令行参数的格式可以是: -flag xxx (使用空格,一个 - 符号) --flag xxx (使用空格,两个 - 符号) -flag=xxx (使用等号,一个 - 符号) --flag=xxx (使用等号,两个 - 符号) 其中,布尔类型的参数防止解析时的二义性,应该使用等号的方式指定。 测试用例: package main import ( "flag" "fmt" ) var Input_pstrName = flag.String("name", "gerry", "input ur name") var Input_piAge = flag.Int("age", 20, "input ur age") var Input_flagvar int func Init() {

Golang | flag & pflag介绍

只愿长相守 提交于 2019-12-05 01:20:20
flag 命令行语法 命令行语法主要有以下几种形式 -flag //只支持bool类型(加上该参数,解析值为true) -flag = x -flag x //只支持非bool类型 以上语法对于一个或两个‘-’号,效果是一样的。 常用函数 flag.String() , flag.Bool() , flag.Int() , flag.Float64() 返回对应类型的指针: func Xxx(name string, value Xxx, usage string) *Xxx arguments . IntPointer = flag . Int ( "int_pointer" , 0 , "help message for int_pointer" ) arguments . StringPointer = flag . String ( "string_pointer" , "" , "help message for string_pointer" ) arguments . FloatPointer = flag . Float64 ( "float_pointer" , 0.1 , "help message for float_pointer" ) arguments . BoolPointer = flag . Bool ( "bool_pointer" ,

Go语言之Golang http请求库HttpRequest

若如初见. 提交于 2019-12-05 01:11:52
Go语言HttpRequest包 https://github.com/kirinlabs/HttpRequest 目录 安装: 发送请求 传递URL参数 响应内容 Json响应内容 定制请求头 JSON请求 Cookie 超时 关闭证书验证 调试模式 连接操作 Respone对象 实例代码 具有快速 构建Headers 、 Cookies 、 设置超时时间 、 请求、耗时、打印请求信息 等功能 安装: go get https://github.com/kirinlabs/HttpRequest 发送请求 导入HttpRequest import "github.com/kirinlabs/HttpRequest" 实例化: req := HttpRequest.NewRequest() 然后,尝试获取某个网页。我们来获取 Github 的公共时间线 res,err := req.Get("https://api.github.com/events") 返回一个res的Response对象和err的Error对象 Post 请求 //无参请求 res,err := req.Post("https://www.baidu.com") //请求体为文本 res,err := req.Post("https://www.baidu.com","hello") //请求体为Json字符串

golang标准库学习——buffio包

别来无恙 提交于 2019-12-05 01:07:10
import "bufio" bufio包实现了有缓冲的I/O。它包装一个io.Reader或io.Writer接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本I/O的帮助函数的对象。 一、常量 const ( // 用于缓冲一个token,实际需要的最大token尺寸可能小一些,例如缓冲中需要保存一整行内容 MaxScanTokenSize = 64 * 1024 ) 二、变量 var ( ErrInvalidUnreadByte = errors . New ("bufio: invalid use of UnreadByte") ErrInvalidUnreadRune = errors . New ("bufio: invalid use of UnreadRune") ErrBufferFull = errors . New ("bufio: buffer full") ErrNegativeCount = errors . New ("bufio: negative count") ) 会被Reader或Writer返回的错误类型 var ( ErrTooLong = errors . New ("bufio.Scanner: token too long") ErrNegativeAdvance = errors . New ("bufio

Golang之bytes.buffer

戏子无情 提交于 2019-12-05 01:06:08
bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建 一个 Buffer (其实底层就是一个 []byte, 字节切片) 向其中写入数据 (Write mtheods) 从其中读取数据 (Write methods) 创建 Buffer缓冲器 var b bytes.Buffer //直接定义一个 Buffer 变量,而不用初始化 b.Writer([] byte ( "Hello " )) // 可以直接使用 b1 := new (bytes.Buffer) //直接使用 new 初始化,可以直接使用 // 其它两种定义方式 func NewBuffer(buf [] byte ) *Buffer func

golang中bytes包用法

为君一笑 提交于 2019-12-05 01:05:46
本文转自 Golove的博客http://www.cnblogs.com/golove/p/3287729.html bytes 包中的函数和方法 // bytes 包实现了用于操作 []byte 的函数,类似于 strings 包中的函数 // bytes.go ------------------------------------------------------------ // Compare 用于比较两个 []byte,并返回 int 型结果 // a == b 返回 0 // a < b 返回 -1 // a > b 返回 1 // 如果参数为 nil 则相当于传入一个空 []byte func Compare(a, b []byte) int ------------------------------------------------------------ // 功能类似于 strings 包中的同名函数 // Count 计算 sep 在 s 中的非重叠个数 // 如果 sep 为空,则返回 s 中的字符个数 + 1 func Count(s, sep []byte) int ------------------------------------------------------------ // 功能类似于 strings 包中的同名函数 //

golang使用ssh远程连接服务器并执行命令

喜欢而已 提交于 2019-12-05 01:04:32
安装golang.org/x 直接去github上面,把 https://github.com/zieckey/golang.org ,把整个目录拷贝下来放到你的gopath下面即可。记住在gopath的src下面,一定是golang.org/x/... 使用 package main import ( "fmt" "golang.org/x/crypto/ssh" "log" "net" "time" ) //连接的配置 type ClientConfig struct { Host string //ip Port int64 // 端口 Username string //用户名 Password string //密码 Client *ssh.Client //ssh client LastResult string //最近一次运行的结果 } func (cliConf *ClientConfig) createClient(host string, port int64, username, password string) { var ( client *ssh.Client err error ) cliConf.Host = host cliConf.Port = port cliConf.Username = username cliConf.Password

Golang中的buffer

匆匆过客 提交于 2019-12-05 01:04:31
io重要的接口 在介绍buffer之前,先来认识两个重要的接口,如下边所示: type Reader interface { Read(p []byte) (n int, err error) } type Writer interface { Write(p []byte) (n int, err error) } 上边两个接口在golang sdk安装目录src/io/io.go中定义。后边凡是涉及到io相关操作的,基本上都实现了这两个接口,如: 1. package bufio 中的Reader类 2. package bytes 中的Reader类与Buffer类 3. package os 中 的File类,这个实现的最为复杂,主要由于在文件操作中,需要系统底层提供服务。 ...不再一一列举... 经常听说有这么一句话:“使用I/O buffer,有助于提高效率”。但是,我想反问的是,真的提高了效率了吗? buffer在什么情况下会提高我们的程序性能呢?带着这个问题,我们来剖析一下上边提到的几个类。 1.第一个类bytes.Reader 这个类,实现了io.Reader接口,但是这个类没有实现io.Writer接口。这个类没有buffer,为啥?因为这个类,在初始化时,将字符流传入到对象中保存,没有提供Write方法写入新的字符流。所以,这个类不需要buffer。 2

Golang之bytes.buffer学习笔记

泄露秘密 提交于 2019-12-05 01:04:17
bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建 一个 Buffer (其实底层就是一个 []byte, 字节切片) 向其中写入数据 (Write mtheods) 从其中读取数据 (Write methods) 创建 Buffer缓冲器 var b bytes.Buffer //直接定义一个 Buffer 变量,而不用初始化 b.Writer([]byte(“Hello “)) // 可以直接使用 b1 := new(bytes.Buffer) //直接使用 new 初始化,可以直接使用 // 其它两种定义方式 func NewBuffer(buf []byte) *Buffer func

golang获取上月的开始日期和结束日期

。_饼干妹妹 提交于 2019-12-05 01:03:45
通过系统time来获取上月的开始和结束日期 package main import ( "fmt" "time" ) const DATE_FORMAT = "2006-01-02" func main() { year , month , _ := time . Now (). Date () thisMonth := time . Date ( year , month , 1 , 0 , 0 , 0 , 0 , time .Local) start := thisMonth.AddDate( 0 , - 1 , 0 ).Format(DATE_FORMAT) end := thisMonth.AddDate( 0 , 0 , - 1 ).Format(DATE_FORMAT) timeRange := fmt.Sprintf( "%s~%s" , start, end ) fmt.Println(timeRange) } 来源: CSDN 作者: pingd 链接: https://blog.csdn.net/pingD/article/details/59487923