Go语言中文网 为您找到相关结果 270

golang 中fmt用法

fmt 包中的函数和方法 本文转自Golang学习-fmt包: http://www.cnblogs.com/golove/p/3286303.html // format.go ------------------------------------------------------------ // Fprintf 将参数列表 a 填写到格式字符串 format 的占位符中 // 并将填写后的结果写入 w 中,返回写入的字节数 func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) // Printf 将参数列表 a 填写到格式字符串 format 的占位符中 // 并将填写后的结果写入...阅读全文

博文 2014-10-10 15:00:01 chenbaoke

Go 字符串格式化

Go对字符串格式化提供了良好的支持。下面我们看些常用的字符串格式化的例子。 package main import "fmt" import "os" type point struct { x, y int } func main() { // Go提供了几种打印格式,用来格式化一般的Go值,例如 // 下面的%v打印了一个point结构体的对象的值 p := point{1, 2} fmt.Printf("%v\n", p) // 如果所格式化的值是一个结构体对象,那么`%+v`的格式化输出 // 将包括结构体的成员名称和值 fmt.Printf("%+v\n", p) // `%#v`格式化输出将输出一个值的Go语法表示方式。 fmt.Printf("%#v\n", p) // 使用`...阅读全文

博文 2014-11-22 12:00:06 fer_ba

golang中io包用法(二)

本文转自https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.1.md,并在此基础上进行修改. io 包为I/O原语提供了基本的接口。它主要包装了这些原语的已有实现。 由于这些接口和原语以不同的实现包装了低级操作,因此除非另行通知,否则客户端不应假定它们对于并行执行是安全的。 在io包中最重要的是两个接口:Reader和Writer接口。本章所提到的各种IO包,都跟这两个接口有关,也就是说,只要实现了这两个接口,它就有了IO的功能。 Reader接口 Reader接口的定义如下: type Reader interface { Read(p []byte) ...阅读全文

博文 2015-01-27 10:00:12 chenbaoke

golang 随机数

package main import "fmt" import "math/rand" func main() { //例如,rand.Intn 返回一个随机的整数 n,0 <= n <= 100。 fmt.Print(rand.Intn(100), ",") fmt.Print(rand.Intn(100)) fmt.Println() //rand.Float64 返回一个64位浮点数 f,0.0 <= f <= 1.0。 fmt.Println(rand.Float64()) //这个技巧可以用来生成其他范围的随机浮点数,例如5.0 <= f <= 10.0 fmt.Print((rand.Float64()*5)+5, ",") fmt.Print((rand.Float64() ...阅读全文

博文 2015-04-21 03:00:00 benlightning

golang 的time包之time

先看看有哪些类型 Time 时间类型,包含了秒和纳秒以及Location Month type Month int 月份.定义了十二个月的常量 Weekday type Weekday int 周,定义了一周的七天 Duration type Duration int64 持续时间.定义了以下持续时间类型.多用于时间的加减 需要传入Duration做为参数的时候.可以直接传入time.Second const ( Nanosecond Duration = 1 Microsecond = 1000 * Nanosecond Millisecond = 1000 * Microsecond Second = 1000 * Millisecond Minute = 60 * Second Hou...阅读全文

博文 2014-10-04 19:26:08 zhepama

Golang读写文件操作

最近在使用Golang进行文件读写的过程中,遇到几个细节问题导致程序写入数据时有一定脏数据的残留,最后发现是使用os.OpenFile在进行文件操作的时候没有使用正确的flag造成的。因此专门去学习了下Golang中读写文件的几种方式方法,在此记录下一些简单的操作,防止以后遗忘。 读文件 使用golang语言去读取一个文件默认会有多种方式,这里主要介绍以下几种。 使用ioutil直接读取 需要引入io/ioutil包,该包默认拥有以下函数供用户调用。 func NopCloser(r io.Reader) io.ReadCloser func ReadAll(r io.Reader) ([]byte, error) func ReadDir(dirname string) ([]os.Fil...阅读全文

博文 2017-12-24 09:03:15 Andy-xu

使用go语言复制文件

怎样使用go语言将文件复制成另一文件?go语言标准包io里提供一个简单的函数copy实现了这个功能,下面是一个例子。 //////////// package main import ( "fmt" "io" "os" ) func main() { CopyFile(os.Args[1], os.Args[2]) // os.Args[1]为目标文件,os.Args[2]为源文件 fmt.Println("复制完成",) } func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if err != nil { return } defer src.Cl...阅读全文

博文 2014-10-24 12:00:01 学思

Go语言圣经 2.2-浮点数

Go提供了两种size的浮点数,float32和float64。它们的算术规范是由IEEE754国际标准定义,现代CPU都实现了这个规范。 浮点数能够表示的范围可以从很小到很巨大,这个极限值范围可以在math包中获取,math.MaxFloat32表示float32的最大值,大约是3.4e38,math.MaxFloat64大约是1.8e308,两个类型最小的非负值大约是1.4e-45和4.9e-324。 float32大约可以提供小数点后6位的精度,作为对比,float64可以提供小数点后15位的精度。通常情况应该优先选择float64,因此float32的精确度较低,在累积计算时误差扩散很快,而且float32能精确表达的最小正整数并不大,因为浮点数和整数的底层解释方式完全不同,具体见I...阅读全文

博文 2016-03-18 18:00:39 abv123456789

golang的fmt包

package fmt import "fmt" mt包实现了类似C语言printf和scanf的格式化I/O。格式化verb('verb')源自C语言但更简单。 Printing verb: 通用: %v 值的默认格式表示。当输出结构体时,扩展标志(%+v)会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 布尔值: %t 单词true或false 整数: %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八进制 %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 %x 表示为十六进制,使用a-f %X 表示为十六进制,使用A-F %U 表示为Unicode格式:U+1234,等价于"U+%04...阅读全文

博文 2014-10-04 19:26:41 刘地

Golang strconv包使用

// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) func main() { fmt.Println(strconv.ParseBool("1")) // true fmt.Println(strconv.ParseBool("t")) // true fmt.Println...阅读全文

博文 2015-07-29 15:00:01 路人甲777

Go学习笔记之基础数据类型

1 整数 在 Go 语言中,如果不加特殊前缀,都是10进制表示,例如:“100” 整数可以直接用指数形式,例如:“1E9”,意思是 1 * (10^9),1 乘以 10 的 9 次方 整数的加减法用 + 和 - 号,乘法用 * 号,除法用 / 号, 得到的商是整数,例如 5 / 2 = 2,而 % 号是求余(取模), 例如 5 % 2 = 1 在 Go语言中,整数类型分为带符号整型和不带符号整型,接着又分别按照长度各自划分为4个类型。 带符号整型 int8 int16 int32 int64 不带符号整型 uint8 uint16 uint32 uint 64 除此之外还有默认类型 int 和 uint,目前都是32位,未来可能会变成64位 还有2个特殊的整型别名 ,和字符串很相关,分别是:...阅读全文

博文 2014-10-12 21:00:11 hnxxwyq

golang编程之时间编程

golang编程之时间编程 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 1385131172 熟悉Linux下C编程的就是time函数的返回值: #include 阅读全文

博文 2015-01-31 01:00:03 stephen830

Golang 中 strings.builder 的 7 个要点

自从 Go 1.10 发布的一个月以来,我多少使用了一下 `strings.Builder`,略有心得。你也许知道它,特别是你了解 `bytes.Buffer` 的话。所以我在此分享一下我的心得,并希望能对你有所帮助。 ## 1. 4 类写入(write)方法 与 `bytes.Buffer` 类似,`strings.Builder` 也支持 4 类方法将数据写入 builder 中。 ```go func (b *Builder) Write(p []byte) (int, error) func (b *Builder) WriteByte(c byte) error func (b *Builder) WriteRune(r rune) (int, error) func (b *Bu...阅读全文

博文 2018-04-14 10:58:21 snowInPluto

golang中的时间和时区

先写一段测试代码: const TIME_LAYOUT = "2006-01-02 15:04:05" func parseWithLocation(name string, timeStr string) (time.Time, error) { locationName := name if l, err := time.LoadLocation(locationName); err != nil { println(err.Error()) return time.Time{}, err } else { lt, _ := time.ParseInLocation(TIME_LAYOUT, timeStr, l) fmt.Println(locationName, lt) return...阅读全文

博文 2018-09-19 19:34:40 云上听风

golang浮点数精度问题

今天遇到一个浮点数截取后计算的问题。截取后的浮点数,再作运算,会导致精度不准确。这种不是必现,而是根据你作运算的具体浮点数决定。 必须想办法100%避免这种问题。 直接上代码吧 问题代码 package main import ( "fmt" "strconv" ) func main() { var ff, e float64 e = 100.00 ff = -0.210615789 ff = FloatRound(ff, 4) fmt.Println(ff) // 输出 -0.2106 qq := ff * e fmt.Println(qq) // 输出 -21.060000000000002 } // 截取小数位数 func FloatRound(f float64, n int) f...阅读全文

博文 2018-05-10 15:33:05 丶老邪

Golang中除法和取模运算与Python3的区别

个人主页:[https://polar9527.github.io] 除法的取整分为三类:向上取整、向下取整、向零取整。 向上取整:向+∞ 方向取最接近精确值的整数。在这种取整方式下, 5 / 3 = 2, -5 / -3 = 2, -5 / 3 = -1, 5 / -3 = -1。 向下取整:向-∞ 方向取最接近精确值的整数。在这种取整方式下, 5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -2, 5 / -3 = -2。 向零取整:向 0 方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整。在这种取整方式下, 5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -1, 5 / -3 = -1。 然后由除法结果根据如下公式推导出模运算结果。...阅读全文

博文 2019-06-06 14:32:43 polar9527

悟空:用Go语言编写的全文搜索引擎

最近Go语言1.5版正式发布,国内关于Go语言的学习和应用也逐渐火热,InfoQ也将关注并推动国内Go语言社区的发展。悟空开源项目是用Go语言编写的全文搜索引擎,InfoQ记者采访了它的作者陈辉,了解了这个项目背后的一些信息。 悟空搜索引擎的特点是高度可定制,具有如下特性: 高效索引和搜索(1M条微博500M数据28秒索引完,1.65毫秒搜索响应时间,19K搜索QPS) 支持中文分词(使用作者自己研发的Go语言中文分词工具sego分词包并发分词,速度27MB/秒) 支持计算关键词在文本中的紧邻距离(token proximity) 支持计算BM25相关度 支持自定义评分字段和评分规则 支持在线添加、删除索引 支持持久存储 可实现分布式索引和搜索 采用对商业应用友好的Apache Licens...阅读全文

博文 2015-09-08 03:00:00 starliu

Golang字符串格式化

Golang字符串格式化 package main import "fmt" type point struct { x, y int } func main() { // 格式化整型,使用`%d`是一种 // 标准的以十进制来输出整型的方式 // 有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。) fmt.Println("=====%d,输出十进制====") fmt.Printf("%d\n", 110) //Output: 110 // 输出整型的二进制表示方式 fmt.Println("=====%b,输出二进制====") fmt.Printf("%b\n", 110) //Output: 1101110 // 输出整型数值所对应的字符(c...阅读全文

记一次golang gc优化过程

我们使用golang编写的线上服务,通常会设置一个golang runtime指标监控,包括goroutine num、gc num、gc pause 等等。最近的一次上线,发现 gc 相关的指标出现异常,gc num 和 gc pause 大幅升高。由于 golang 的 gc 是 stop the world 来做, gc 过多会抢占程序的正常执行时间,甚至影响对外提供的服务,因此暂停了上线,准备先把 gc 的问题修复下。 出问题时的 gc 监控如下: image.png 其中蓝色曲线表示 gc num,黄色曲线表示 gc pause(单位ms),两个指标都是30s的累计数据。可以看到每30s的pause达到了秒级别。 登录到线上机器,通过 go tool pprof --alloc_o...阅读全文

博文 2017-09-25 12:34:48 zippera

golang标准库binary学习

简介 Package binary implements simple translation between numbers and byte sequences and encoding and decoding of varints. The varint functions encode and decode single integer values using a variable-length encoding; smaller values require fewer bytes.For a specification, see https://developers.google.com/protocol-buffers/docs/encoding. 翻译:binary 包,...阅读全文

博文 2018-07-05 17:34:48 Tim_SSS

Go语言学习(四)常用类型介绍

1.布尔类型 var v1 bool v1 = true; v2 := (1==2) // v2也会被推导为bool类型 2.整型 类 型 长度(字节) 值 范 围 int8 1  128 ~ 127 uint8(即byte)1 0 ~ 255 int16 2  32 768 ~ 32 767 uint16 2 0 ~ 65 535 int32 4  2 147 483 648 ~ 2 147 483 647 uint32 4 0 ~ 4 294 967 295 int64 8  9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 uint64 8 0 ~ 18 446 744 073 709 551 615 int 平台相关 ...阅读全文

博文 2016-04-02 14:00:00 mChenys

golang中net包用法(三)--TCP和UDP以及Unix domain socket

type TCPAddr //表示TCP终端地址 type TCPAddr struct { IP IP Port int Zone string // IPv6寻址范围 } func ResolveTCPAddr(net, addr string) (*TCPAddr, error)//将一个地址解析成TCP地址形式,形如"host:port"或 "[ipv6-host%zone]:port",解析得到网络域名和端口名.其中net必须是"tcp","tcp4"或者"tcp6",IPv6地址字面值/名称必须用方括号包起来,如"[::1]:80"、"[ipv6-host]:http"或"[ipv6-host%zone]:80". func (a *TCPAddr) Network() stri...阅读全文

博文 2015-06-18 19:00:33 chenbaoke

golang测试TCP最大连接数

受限于本地端口数的分配,我想看看本地能起到多少个TCP client连接 本测试用例client和server都部署在同一台linux虚拟机上 查看进程打开的描述符数:102400(10万) [root@bogon ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15042 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited o...阅读全文

博文 2015-10-27 13:00:03 webyh

golang printf中的%c,%d,%u.都分别代表输出的是什么类型的?

%表示格式化字符串输出目前printf支持以下格式的输出,例如:printf("%c",a);输出单个字符。printf("%d",a);输出十进制整数。printf("%f",a);输出十进制浮点数.printf("%o",a);输出八进制数。printf("%s",a);输出字符串。printf("%u",a);输出无符号十进制数。printf("%x",a);输出十六进制数...阅读全文

博文 2017-07-10 08:07:47 Robinbing

Go 语言的基本数据类型

Go 语言的基本数据类型 0)变量声明 var 变量名字 类型 = 表达式 例: var num int = 10 其中“类型”或“= 表达式”两个部分可以省略其中的一个。 1)根据初始化表达式来推导类型信息 2)默认值初始化为0。 例: var num int // var num int = 0 var num = 10 // var num int = 10 1)整型 1.1)整型类型 类型名称有无符号bit数 int8 Yes 8 int16 Yes 16 int32 Yes 32 int64 Yes 64 uint8 No 8 uint16 No 16 uint32 No 32 uint64 No 64 int Yes 等于cpu位数 uint No 等于cpu位数 rune Ye...阅读全文

博文 2016-09-08 12:00:01 fengbohello

Go语言圣经 2.3-复数

Go提供了两种大小的复数类型:complex64和complex128,分别由float32和float64组成。内置函数complex从指定的实部和虚部构建复数,内置函数real和imag用来获取复数的实部和虚部:var x complex128 = complex(1, 2) // 1+2i var y complex128 = complex(3, 4) // 3+4i fmt.Println(x*y) // "(-5+10i)" fmt.Println(real(x*y)) // "-5" fmt.Println(imag(x*y)) // "10" 如果一个浮点数的字面量后面跟着一个i,例如3.141592i或2i,那么它将变成一个复数的虚部,这个复数的实部是0:fmt.Print...阅读全文

博文 2016-03-19 03:00:02 abv123456789

golang的slice作为函数参数传值的坑

直接贴代码 func sliceModify(slice []int) { // slice[0] = 88 slice = append(slice, 6) } func main() { slice := []int{1, 2, 3, 4, 5} sliceModify(slice) fmt.Println(slice) } 返回的没变,坑爹的,这个设计太那啥了,可以正确跑出效果的版本如下: func sliceModify(slice *[]int) { *slice = append(*slice, 6) } func main() { slice := []int{1, 2, 3, 4, 5} sliceModify(&slice) fmt.Println(slice) ...阅读全文

博文 2014-10-04 19:26:12 ziyouchutuwenwu

Go语言 字符串

在所有编程语言中都涉及到大量的字符串操作,可见熟悉对字符串的操作是何等重要。 Go中的字符串和C#中的一样(java也是),字符串内容在初始化后不可修改。 需要注意的是在Go中字符串是有UTF-8编码的,请注意保存文件时将文件编码格式改成UTF-8(特别是在windows下)。 初始化 var str string //声明一个字符串 str = "laoYu" //赋值 ch :=str[0] //获取第一个字符 len :=len(str) //字符串的长度,len是内置函数 ,len=5 字符串操作 编码过程中避免不了中文字符,那我们该如何提取一个中文呢?首先我们要知道string[index]获取的是字符byte,就无法像C#中"老虞"[0]来取到‘老’,在Go中需要将字符串转换成r...阅读全文

博文 2014-10-30 03:00:01 ghgyj

golang的io包

package io import "io" io包提供了对I/O原语的基本接口。本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作。 因为这些接口和原语是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安全的。 Index Variables type Reader type Writer type Closer type Seeker type ReadCloser type ReadSeeker type WriteCloser type WriteSeeker type ReadWriter type ReadWriteCloser type Read...阅读全文

博文 2014-10-04 19:26:40 刘地

golang 中io包用法(一)

本文转自Golove博客:http://www.cnblogs.com/golove/p/3276678.html ,并在此基础上进行修改. io 包为I/O原语提供了基础的接口.它主要包装了这些原语的已有实现,如 os 包中的那些,抽象成函数性的共享公共接口,加上一些其它相关的原语。 由于这些接口和原语以不同的实现包装了低级操作,因此除非另行通知,否则客户不应假定它们对于并行执行是安全的。 在io包中最重要的是两个接口:Reader和Writer接口,首先来介绍这两个接口. type Reader interface { Read(p []byte) (n int, err error) } Reader 接口包装了基本的 Read 方法。 Read 将 len(p) 个字节读取到 p 中...阅读全文

博文 2015-06-19 01:00:27 chenbaoke

Golang使用Redis

go使用Redis 文档链接:https://godoc.org/github.com/go-redis/redis import ( "fmt" "github.com/go-redis/redis" ) var ClientRedis *redis.Client const ( REDIS_NETWORK = "tcp" REDIS_HOST = "" REDIS_PORT = "" REDIS_PASSWORD = "" REDIS_DB = 0 ) func init() { options := redis.Options{ Network: REDIS_NETWORK, Addr: fmt.Sprintf("%s:%s", REDIS_HOST, REDIS_PORT), Dia...阅读全文

博文 2020-04-05 13:32:44 是个懒人

Go语言 整数和浮点数性能对比

我们团队使用Go来开发游戏服务端,游戏服务端的战斗逻辑避免不了各种计算,C的编程经验告诉我们整数运算效率比浮点运算高,但是在Go语言中,这两种数据类型的运算效率到底差多少呢?是否有必要把浮点数转换成整数的万分数或者千分数进行运算呢?下面通过实验来对比。 实验代码(github): package labs05 import "testing" func Benchmark_IntAdd(b *testing.B) { var a = 0 for i := 0; i < b.N; i++ { a += 1 } } func Benchmark_Int8Add(b *testing.B) { var a int8 = 0 for i := 0; i < b.N; i++ { a += 1 } }...阅读全文

博文 2015-06-17 23:01:27 abv123456789

golang reflect

reflect包实现了运行时反射,允许程序操作任意类型的对象。典型用法是用静态类型interface{}保存一个值,通过调用TypeOf获取其动态类型信息,该函数返回一个Type类型值。调用ValueOf函数返回一个Value类型值,该值代表运行时的数据。Zero接受一个Type类型参数并返回一个代表该类型零值的Value类型值 type package main import ( "reflect" "fmt" ) type lx interface { SayHi() } type User struct { Name string Age int64 Sex string } func (u *User) SayHi() { fmt.Println("hello world") } f...阅读全文

博文 2015-10-05 10:00:04 别人说我名字很长

golang学习笔记之-取随机数

取随机数 package main import ( "fmt" "math/rand" "time" ) func main() { //step1: 设置种子数 rand.Seed(time.Now().UnixNano()) //step2:获取随机数 num4 := rand.Intn(100) //[0,100) fmt.Println(num4) } 取从什么开始到什么结束: package main import ( "fmt" "math/rand" "time" ) func main() { //取[n,m]的数 语法入下: //rand.Seed(time.Now().UnixNano()) //num := rand.Intn(m-n+1) + n //取5到10的数...阅读全文

博文 2018-09-02 20:34:43 Maggie_up

Golang 逐行读取大文件性能对比

前 言 BUFIO 是什么? BUFIO 是用来驱动 I/O 列内的专用时钟网络,这个专用的时钟网络独立于全局时钟资源,适合采集源同步数据。BUFIO 只能由位于同一时钟区域的 Clock-Capable I/O驱动。一个时钟区域有4个 BURIO,其中的2个可以驱动相邻区域的 I/O 时钟网络。BUFIO 不能驱动逻辑资源(CLB、BRAM等),因为 I/O 时钟网络只存在于 I/O 列中。 简单点就是: bufio 包实现了带缓存的 I/O 操作 它封装一个 io.Reader 或 io.Writer 对象 使其具有缓存和一些文本读写功能 本文主要来对比一下 BUFIO 中的 ReadString 和 ReadLine 函数的性能。 注:测试代码忽略读取内容和错误处理 ReadStrin...阅读全文

博文 2017-09-13 05:34:50 51reboot

Prometheus远程存储

除了其本地时间序列数据库之外,还可以将Prometheus配置为读取和写入远程存储。这旨在支持监视数据的长期存储。 远程读 配置后,Prometheus存储查询(例如,通过HTTP API)将发送到本地和远程存储,然后合并结果。 请注意,为了在面对远程存储问题时保持可靠性,警报和记录规则评估仅使用本​​地TSDB。 配置 您可以在Prometheus配置文件的remote_read部分中配置远程存储读取路径。 最简单的是,您只需为远程存储指定读取的端点URL,再加上身份验证方法。您可以使用HTTP基本认证或承载令牌认证。 您可能需要使用read_recent标志:设置为true时,将从远程存储和本地存储中回答所有查询。如果为false(默认值),则可以从本地存储完全回答的所有查询都不会发送到...阅读全文

博文 2019-12-19 17:32:42 iyacontrol

golang标准库中的encoding/hex包

1、golang中hex包是什么? 2、hex包给开发者提供了什么内容?以及怎么使用? 3、相关链接 一、golang中hex包是什么? hex包实现了16进制字符表示的编解码。 二、hex包给开发者提供了什么内容?以及怎么使用? 变量 var ErrLength = errors.new("encoding/hex: odd length hex string") 解码一个长度为奇数的切片时,将返回此错误 type InvalidByteError byte 描述一个hex编码字符串中的非法字符。 func (e InvalidByteError) Error() string 函数 1)func DecodeLen(x int) int 长度x的编码数据解码后的明文数据的长度 2)fun...阅读全文

Go语言 时间处理详解

编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 1385131172 熟悉Linux下C编程的就是time函数的返回值: #include time_t n...阅读全文

博文 2015-06-17 20:05:17 abv123456789

Golang Printf、Sprintf 、Fprintf 格式化

https://www.cnblogs.com/dfsxh/p/10316601.html /* %v 输出结构体 {10 30} %+v 输出结构体显示字段名 {one:10 tow:30} %#v 输出结构体源代码片段 main.Point{one:10, tow:30} %T 输出值的类型 main.Point %t 输出格式化布尔值 true %d输出标准的十进制格式化 100 %b输出标准的二进制格式化 99 对应 1100011 %c输出定整数的对应字符 99 对应 c %x输出十六进制编码 99 对应 63 %f输出十进制格式化 99 对应 63 %e输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08 %E输出科学技科学记数法表示形式 1234...阅读全文

博文 2019-06-18 14:02:47 w85278161

go浮点数转字符串保留小数点后N位解决办法

最近在项目中碰到很多次float转string,同时要求保留小数点后几位,并且去掉小数点后0的场景 虽然问题很简单,但是隔了挺久没处理这种场景就有些生疏了,自己也搜了一下,很多回答都不太满意。这里贴一下自己的做法,如果有更好的解决办法的话,还请多多指教 // 主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果 func FormatFloat(num float64, decimal int) string { // 默认乘1 d := float64(1) if decimal > 0 { // 10的N次方 d = math.Pow10(decimal) } // math.trunc作用就是返回浮点数的整数部分 // 再除回去,小数点后无效的0也就不存在了 retur...阅读全文

Golang为什么没有整型的max/min方法

作为有一些经验的Golang开发者,你可能意识到了Golang并没有max/min方法来返回给定的两个或多个整型数值中的最大值或最小值。其他语言通常会在核心库中提供这类方法。 你有没有想过为什么Golang没有这么做? Golang确实在math包中提供了max/min方法,但是仅用于对比float64类型。方法的签名如下: math.Min(float64, float64) float64 math.Max(float64, float64) float64 Golang为float64提供max/min方法是浮点类型的比较对于大部分开发者来说比较困难。由于涉及精度问题,浮点数的对比往往没有那么直接。所以Golang在math包中提供了用于浮点数对比的内建方法。 对于int/int64数...阅读全文

博文 2019-12-07 20:32:40 李小西033

fmt包的Println,Printf和Sprintf的区别

fmt包实现了格式化的I/O,其功能类似于C的printf和scanf。这是官网给出的解释。 **Println:** 1. 用默认的类型格式显示方式将传入的参数写入到标准输出里面(即在终端中有显示), 2. 多个传入参数之间使用空格分隔, 3. 在显示的最后追加换行符, 4. 返回值为 写入标准输出的字节数和写入过程中遇到的问题。 **Printf:** 1. 用传入的格式化规则符将传入的变量写入到标准输出里面(即在终端中有显示), 2. 返回值为 写入标准输出的字节数和写入过程中遇到的问题。 **Sprintf:** 1. 用传入的格式化规则符将传入的变量格式化,(终端中不会有显示) 2. 返回为 格式化后的字符串。 ``` go testStr := []byte("test str"...阅读全文

博文 2018-11-08 09:49:02 lijingtian

根据输入的日期(年月日)判断是星期几——golang实现

输入日期,如2018年11月07日,输出对应的星期数代码如下: // 历史上的某一天是星期几?未来的某一天是星期几? // 关于这个问题,最著名的计算公式是蔡勒(Zeller)公式。即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 // output: w: 0 - 周日; // 1 - 周一; // 2 - 周二; // 3 - 周三; // 4 - 周四; // 5 - 周五; // 6 - 周六; // 公式中的符号含义如下,w:星期; // c:世纪-1; // y:年(两位数); // m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算) // d:日;...阅读全文

博文 2018-11-08 00:34:44 逍遥子_

老虞学GoLang笔记-字符串

在所有编程语言中都涉及到大量的字符串操作,可见熟悉对字符串的操作是何等重要。 Go中的字符串和C#中的一样,字符串内容在初始化后不可修改。 需要注意的是在Go中字符串是有UTF-8编码的,请注意保存文件时将文件编码格式改成UTF-8(特别是在windows下)。 初始化 var str string //声明一个字符串 str = "laoYu" //赋值 ch :=str[0] //获取第一个字符 len :=len(str) //字符串的长度,len是内置函数 ,len=5 字符串操作 编码过程中避免不了中文字符,那我们该如何提取一个中文呢?首先我们要知道string[index]获取的是字符byte,就无法像C#中"老虞"[0]来取到‘老’,在Go中需要将字符串转换成rune数组,ru...阅读全文

博文 2015-07-21 15:00:00 Gopher老虞

golang中使用protobuf

1. 下载protoc 可以去https://github.com/google/protobuf/releases下载源码自己编译 或者https://github.com/google/protobuf/releases去下载编译好的二进制文件 2. 安装protoc-gen-go go get github.com/golang/protobuf/protoc-gen-go 安装好了之后, 在$GOPATH/bin下面会找到protoc-gen-go.exe 3. 使用protoc.exe 和 protoc-gen-go.exe 生成协议代码 protoc --proto_path=./proto --go_out=./src_gen/go/ scoreserver/score_inf...阅读全文

博文 2018-08-08 16:34:48 yandaren

Go strconv包_字符串和数值类型的转换

Go strconv包_字符串和数值类型的转换 将字符串转换成数值类型和布尔类型 package main import ( "fmt" "strconv" ) func main() { str1 := "0.23" f1, _ := strconv.ParseFloat(str1, 64) f2, _ := strconv.ParseFloat(str1, 32) fmt.Println(f1) //0.23 fmt.Println(f2) //0.23 fmt.Println(f2 * 100) str2 := "1234f" // 16进制的字符串 // 将字符串解析为整数,ParseInt 支持正负号,ParseUint 不支持正负号。 // base 表示进位制(2 到 36),...阅读全文

[go] unsafe包

uintptr是go的内置类型,用于指针运算,其底层基于int类型。uintptr不是指针,GC会回收uintptr类型的对象。 unsafe.Sizeof unsafe.Sizeof函数返回的就是uintptr类型的值(表达式,即值的大小): var p float64 = 99 fmt.Println(reflect.TypeOf(unsafe.Sizeof(p))) fmt.Println(unsafe.Sizeof(p)) >>> uintptr >>> 8 unsafe.Sizeof接受任意类型的值(表达式),返回其占用的字节数,在上面的例子中float64的大小是8bytes。 如果传入一个指针类型的对象会返回多少呢? type W struct { a byte b int32...阅读全文

博文 2016-04-25 14:00:00 cc7756789w