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

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} %#v 相应值的Go语法表示 Printf("#v", people) main.Human{Name:"zhangsan"} %T 相应值的类型的Go语法表示 Printf("%T", people...阅读全文

golang 正则表达式

package main import "bytes" import "fmt" import "regexp" func main() { //这个测试一个字符串是否符合一个表达式。 match, _ := regexp.MatchString("p([a-z]+)ch", "peach") fmt.Println(match) //上面我们是直接使用字符串,但是对于一些其他的正则任务,你需要使用 Compile 一个优化的 Regexp 结构体。 r, _ := regexp.Compile("p([a-z]+)ch") //这个结构体有很多方法。这里是类似我们前面看到的一个匹配测试。 fmt.Println(r.MatchString("peach")) //这是查找匹配字符串的。 f...阅读全文

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

用GO语言实现一个简单的搜索引擎

用GO语言实现一个简单的搜索引擎 项目地址是:https://github.com/wyh267/FalconEngine 对搜索引擎感兴趣的可以去看看这本书,比较浅并且也比较完整的介绍了一个搜索引擎的全部机能。 我的这个搜索引擎原始数据是MySql数据库的,大家可以根据需要进行二次开发,用来支持其他数据库或者本地文件,Detail文件是存储在Redis数据库中,同样这部分也可以根据自己的需要二次开发,使用本地文件或者其他数据库,倒排索引和正排索引本地存储的时候使用的json格式,比较耗磁盘,第一版暂时这样了吧,后续再做优化。 使用方法 依赖以下几个库 github.com/outmana/log4jzl log文件 github.com/ewangplay/config 配置文件解析 gi...阅读全文

博文 2015-07-28 00:00:00 ygrx

Go语言fmt.Printf的使用

Fmt包 import "fmt" 简介 ▾ Package fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C但更简单一些。 输出 格式: 一般: %v 基本格式的值。当输出结构体时,扩展标志(%+v)添加成员的名字。the value in a default format. when printing structs, the plus flag (%+v) adds field names %#v 值的Go语法表示。 %T 值的类型的Go语法表示。 %% 百分号。 布尔型: %t 值的true或false 整型: %b 二进制表示 %c 数值对应的Unicode编码字符 %d 十进制表示 %o 八进制表示 %q 单引号 %x 十六进制表示,...阅读全文

博文 2015-10-28 21:00:32 fyxichen

Go-下载网上图片

package main import ( "bytes" "fmt" "io" "io/ioutil" "net/http" "os" "regexp" ) func main() { imagPath := "http://img2.bdstatic.com/img/image/166314e251f95cad1c8f496ad547d3e6709c93d5197.jpg" //图片正则 reg, _ := regexp.Compile(`(\w|\d|_)*.jpg`) name := reg.FindStringSubmatch(imagPath)[0] fmt.Print(name) //通过http请求获取图片的流文件 resp, _ := http.Get(imagPath) ...阅读全文

博文 2015-12-11 17:00:02 shuanger_

go编程之简单正则表达式使用

对于正则表达式的语法,虽然曾经有熟悉过,但只会用比较简单的匹配模式,现在长时间不用,连简单的匹配写起来都有点成为硬伤的赶脚,不过这里终点不是正在表达式的学习了,咱来看看go语言对于正则表达式的支持及简单的使用就好,程序主要参考go web一书所写,大家可以一起来学习。 主要使用的包为regexp,使用的时候import "regexp“ 就行啦,以下是常用的几个接口 func Match( pattern string, b [ ] byte) ( matched bool, error error) func MatchReader( pattern string, r io. RuneReader) ( matched bool, error error) func MatchStrin...阅读全文

博文 2015-06-17 23:08:15 xixionedream

GOLANG 基本数据类型 整型

基本数据类型-整型 种类 有符号(负号) int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位数) int uint 类型别名 Unicode字符rune类型等价int32 byte等价uint8 特殊类型 uintptr,无符号整型, 由系统决定占用位大小,足够存放指针即可,和C库或者系统接口交互 取值范围 具体类型 取值范围 int8 -128到127 uint8 0到255 int16 -32768到32767 uint16 0到65535 int32 -2147483648到2147483647 uint32 0到4294967295 int64 -9223372036854775808到9223...阅读全文

博文 2016-08-30 16:00:00 zengyz

go利用x/net/html包实现的蜘蛛

看了网上很多个spider版本, 几乎都是使用regexp包正则匹配实现. 其实使用DOC, 性能更好, 也更优雅 package main import ( "fmt" "net/http" "os" "golang.org/x/net/html" ) func visit(links []string, n *html.Node) []string { if n.Type == html.ElementNode && n.Data == 'a' { for _, a := range n.Attr { if a.Key == "href" { links = append(links, a.Val) } } } for c := n.FirstChild; c != nil; c = c...阅读全文

博文 2016-07-21 16:00:00 black_OX

go源码阅读笔记(math.4)

go源码阅读笔记(math.4) 参考godoc API API列表 func NaN() float64 函数返回一个IEEE 754“这不是一个数字”值。 func IsNaN(f float64) (is bool) 判断f是否是NaN值 func Inf(sign int) float64 如果sign>=0返回正无穷大,否则返回负无穷大 func IsInf(f float64, sign int) bool 判断其是否是无穷大数 func Float32bits(f float32) uint32 函数返回浮点数f的IEEE 754格式二进制表示的值对应的4字节无符号整数(每位值不变)。主要是用于位运算之类的,转换成无符号整数,这样不会使用浮点运算器,速度快 func Float...阅读全文

博文 2016-04-05 00:00:00 qq_15437667

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实现爬取href链接

刚开始爬取的时候是用正则表达式实现的,然后爬取了不必要的链接,现在改用goquery实现: // judgeUrl project judgeUrl.go package judgeUrl import ( "strings" ) func IsUrl(str string) bool { if strings.HasPrefix(str, "#") || strings.HasPrefix(str, "//") || strings.HasSuffix(str, ".exe") || strings.HasSuffix(str, ":void(0);") { return false } else if strings.HasPrefix(str, "{") && strings.HasS...阅读全文

博文 2016-02-18 22:00:00 u011466175

Go语言:正则表达式的使用

Go语言的正则表达式使用很简单,示例代码: package test import ( "fmt" "regexp" ) func RegixBase() { //findTest() //findIndexTest() //findStringTest() //findChinesString() //findNumOrLowerLetter() findAndReplace() } //传入[]byte,返回[]byte func findTest() { str := "ab001234hah120210a880218end" reg := regexp.MustCompile("\\d{6}") //六位连续的数字 fmt.Println("------Find------") //...阅读全文

博文 2015-06-17 23:00:50 books1958

golang 时间加减

package main import ( "fmt" "time" ) // 这个方法就是把加减时间值和时间整合到了一起而已 func CTime(t time.Time, time_str string) time.Time { time_part, err := time.ParseDuration(time_str) if err != nil { fmt.Println(err) return t } return t.Add(time_part) } func main() { k := time.Now() /*ParseDuration解析一个时间段字符串。一个时间段字符串是一个序列,每个片段包含可选的正负号、 十进制数、可选的小数部分和单位后缀,如"300ms"、"-1.5...阅读全文

博文 2017-10-30 06:03:10 捍卫机密

go语言十大排序算法总结(下篇)

希尔排序 希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2《d1重复上述的分组和排序,直至所取的增量dt=1(dt《dt-l《…《d2《d1),即所有记录放在同一组中进行直接插入排序为止。 该方法实质上是一种分组插入方法。 个人总结: public class ShellSorter { public void Sort(int[] arr) { int inc; for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ; for (; inc > 0; inc /= 3) { for (int i = ...阅读全文

博文 2016-07-17 19:00:04 guoer9973

【Go】 格式处理

格式化字符串 在golang里面获取时间戳并不难。只要加载time包。time.Now().Unix() fmt.Sprintf("%d",int64),自此,go语言的int转换成string有3种方法 1、int32位,strconv.Itoa2、大于32位,strconv.FormatInt()3、万恶的fmt.Sprintf...好吧,这个我在php里是经常用来做格式化 引入strings包 strings.contains() index() indexany() indexFunc() 正则表达式 DFANFABacktrackin...阅读全文

博文 2015-07-06 03:00:00 viewcozy

用Golang写一个搜索引擎 (0x00)--- 从零开始

很早就想写一系列的这样的文章了,之前在一个电商公司做搜索,对搜索引擎有一些认识,来到一个新的创业公司以后非常高兴还有机会继续做这方面的事情,虽然领域已经变了,而且不是做搜索了,但是技术还是那些技术,并且有机会接触到了Go语言,对于一个将近10年C/C++的程序员来说,Go的一些特质让我觉得非常舒服,可参见我之前的这篇文章。 从公司项目衍生出了一个自己的搜索引擎项目,然后有了这篇文章。 先聊聊目标吧,我希望实现一个这样的搜索引擎 使用Go语言实现,方便部署,最好就用一个二进制文件搞定一些,不需要安装任何依赖。 类似一个电商的搜索引擎,支持多字段的检索,不仅仅是文本的全文索引,还需要包括过滤功能(比如价格区间过滤),汇总功能(比如结果集中品牌数量汇总),基本的统计功能。 索引器和搜索器在一起,主...阅读全文

博文 2016-07-11 13:50:21 吴yh坚

Go语言正则表达式

package main import ( "fmt" "regexp" ) func main() { // regular expression pattern regE := regexp.MustCompile("/oid/([\\d]+)/") // simulate a search // first convert string to byte for Find() function searchByte := []byte("/oid/1/") matchSlice := regE.Find(searchByte) fmt.Printf("%s \n", matchSlice) // if found, return leftmost match, without 'abc'...阅读全文

博文 2015-07-13 11:00:05 冷絮

golang fmt.printf I/O 函数格式化说明

[TOC] 说明 fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf格式“占位符”衍生自 C,但比 C 更简单 常用格式化输出 fmt.Printf("start at number %v, end count %v\n",start, count) 注意参数输出数量和占位符数量要一致 IDEA开发快速格式化模板 使用IDEA开发可以配置自定义代码模板快速生成 Settings -> Editor -> Live Templates 选中 go 语言展开 选则增加一条 Abbreviation 填写 fpf Description 填写 print fmt format Template text fmt.Printf("$END$",$VAR$) Appli...阅读全文

博文 2017-03-05 19:34:39 泛原罪

golang 中的 regexp 包

正则语法 google/re2 Printf 语法 几个函数方法 名称 说明 备注 Match 验证正则表达式是否匹配 []byte - MatchString 验证正则表达式是否匹配 string - FindAllString Regexp的方法,匹配字符串,返回匹配结果组成一个 []string。限定参数 -1表示不限定,其它表示限定。 - FindAllStringSubmatch Regexp的方法,返回一个 [][]string - 示例 MatchString func MatchString(pattern string, s string) (matched bool, err error) matched, err := regexp.MatchString("foo.*...阅读全文

博文 2017-07-09 06:03:51 中柠檬

用Golang写一个搜索引擎(0x01)--- 基本概念

从零开始,写一个搜索引擎 (0x01) 第零部分我们已经列了一个提纲了,这一篇文章开始要详细说说了。 搜索引擎基本概念 在说搜索引擎架构分层之前,我们先确定几个搜索引擎的概念。 文档,搜索引擎的基本数据单元,比如一张网页,一个商品,多个文档合在一起就是一个搜索引擎的完整数据 倒排索引,正排索引,存储在搜索引擎内部的数据结构,也是搜索引擎最底层的数据结构。 索引器,将文档数据生成可供搜索的倒排索引和正排索引的程序就是索引器。 检索器,通过对倒排索引和正排索引进行查找,从而查找到文档的程序。 字段,每个文档可能有多个字段,比如一篇文章有标题,作者,摘要,详情,发布时间的,这些东西虽然在一个文档中,但是搜索的时候需要区别对待。 索引,多个文档通过索引器生成了一堆倒排正排索引,我们把这些倒排正排索引...阅读全文

博文 2016-07-27 10:54:23 吴yh坚

golang 格式化输入输出

fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf。格式“占位符”衍生自 C,但比 C 更简单。 【打印】 占位符: [一般] %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,等同于 ...阅读全文

博文 2015-12-22 12:00:05 zhangxing__

Go中的素数筛选

~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~ Examination Problem 质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 判断101-200之间有多少个素数,并输出所有素数。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Analysis 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。 质数大于等于2不能被它本身和1以外的数整除 ~~~~...阅读全文

博文 2016-09-11 15:00:00 u013346007

golang的json处理

1、string跟[]byte的关系 string跟[]byte可以相互转换 s1 := "abcd" b1 := []byte(s1) fmt.Println(b1) // [97 98 99 100] s2 := "中文" b2 := []byte(s2) fmt.Println(b2) // [228 184 173 230 150 135], unicode,每个中文字符会由三个byte组成 2、json字符串转json var dat map[string]interface{} if err := json.Unmarshal([]byte(newstr), &dat); err == nil { fmt.Println(dat["info"]) } json字符串转json通过...阅读全文

博文 2016-11-19 14:01:03 tree2013

go 正则表达式

go正则表达式大全 ackage test import ( “fmt” “regexp” ) func RegixBase() { //findTest() //findIndexTest() //findStringTest() //findChinesString() //findNumOrLowerLetter() findAndReplace() } //传入[]byte,返回[]byte func findTest() { str := “ab001234hah120210a880218end” reg := regexp.MustCompile(“\d{6}”) //六位连续的数字 fmt.Println(“——Find——”) //返回str中第一个匹配reg的字符串 dat...阅读全文

博文 2016-09-10 18:00:02 guoer9973

Go语言正则表达式

package main import "bytes" import "fmt" import "regexp" func main() { //这个测试一个字符串是否符合一个表达式。 match, _ := regexp.MatchString("p([a-z]+)ch", "peach") fmt.Println(match) //上面我们是直接使用字符串,但是对于一些其他的正则任务,你需要使用 Compile 一个优化的 Regexp 结构体。 r, _ := regexp.Compile("p([a-z]+)ch") //这个结构体有很多方法。这里是类似我们前面看到的一个匹配测试。 fmt.Println(r.MatchString("peach")) //这是查找匹配字符串的。 f...阅读全文

博文 2016-04-30 05:00:02 Jesounao

golang fmt占位符

golang fmt格式“占位符” qing123 · 2015-03-21 03:00:01 · 43307 次点击 · 预计阅读时间 2 分钟 · 大约1分钟之前 开始浏览 这是一个创建于 2015-03-21 03:00:01 的文章,其中的信息可能已经有所发展或是发生改变。 golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段...阅读全文

博文 2018-07-14 18:30:00 Csir

golang之正则校验

Go语言中使用正则校验需要用到 regexp 包 先介绍几种常用的方法: 1、 使用MatchString函数 regexp.MatchString(pattern string, s string) pattern为正则表达式,s为需要校验的字符传 例: match,_:=regexp.MatchString("p([a-z]+)ch","peddach") 返回的第一个参数是bool类型即匹配结果,第二个参数是error类型 fmt.Println(match) //结果为true 2、使用 Compile函数或MustCompile函数 它们的区别是Compile返回两个参数*Regexp,error类型,而MustCompile只返回*Regexp类型 func Compile(ex...阅读全文

博文 2016-11-22 01:00:02 skh2015java

golang语言渐入佳境[29]-math包核心方法

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586package mainimport ("fmt""math")/*1、func IsNaN(f float64) (is bool) ● 报告f是否表示一个NaN(Not A Number)值。2、func Ceil(x float64) float64 ● 返回不小于x的最小整数(的浮点值)3、func Floor(x float64) float64 ● 返回不大于...阅读全文

博文 2018-12-12 00:35:18 jonson_jackson

Go语言:正則表達式的使用

Go语言的正則表達式使用非常easy。演示样例代码: package test import ( "fmt" "regexp" ) func RegixBase() { //findTest() //findIndexTest() //findStringTest() //findChinesString() //findNumOrLowerLetter() findAndReplace() } //传入[]byte,返回[]byte func findTest() { str := "ab001234hah120210a880218end" reg := regexp.MustCompile("\\d{6}") //六位连续的数字 fmt.Println("------Find------...阅读全文

博文 2015-12-22 03:00:01 gcczhongduan

go语言文件正则表达式搜索

package main import ( "fmt" "os" "path/filepath" "regexp" ) func main() { // 命令行参数 args := os.Args // 检查参数 if len(args) == 1 { fmt.Println("ff is a file find tool. use like bottom") fmt.Println("ff [dir] [regexp]") return } if len(args) < 3 { fmt.Println("args < 3") return } fileName := args[1] pattern := args[2] file, err := os.Open(fileName) if e...阅读全文

博文 2015-06-17 23:02:36 aotian16

Go语言之常量与运算符

常量与运算符 常量声明后必须要赋值,在常量声明组中,赋值可以是向上原则 举例: const ( aa1 = 1 bb1 cc1 ) bb1和cc1没有赋值,那么bb1遵循向上原则,值等于aa1,然后cc1遵循向上原则,cc1等于bb1的值,这样三个常量都有了值。 枚举iota const ( aa1 = iota bb1 cc1 ) 当一个常量组使用了iota,枚举时,组成员值开始从0以此递增。也就是说aa1= 0,bb1=1,那么下面怎么说 const ( aa1 bb1 = iota cc1 ) 结果是相同的,只要在这个组里面使用了iota,无论在哪里位置,都是从组第一个常量开始递增。 它遇到const就会重置,例如: const ( aa1 bb1 = iota cc1 = iota ...阅读全文

博文 2016-08-06 19:00:00 little_newBee

通过leetcode学习位运算及其Go实现

问题描述 461. Hamming Distance即求两个正整数的二进制对应位数不同的个数 原理说明 从问题描述来看,最直观的解决方法就是十进制数先转成二进制,再比对相同位数是否相同,不同则计数器累加,最终计数器的值即是Hamming Distance。 优化方案:先^运算,对运算结果的位数进行遍历,1则计数器累计 基于这个思想,需要用到的有 异或运算 和 位运算。 异或^ 和 异或非 异或运算法则:相同为零,不同为一。异或非运算法则:相同为一,不同为零。即: 输入A: 1 0 1 0 输入B: 1 1 0 0 异或运算结果: 0 1 1 0 异或非(同或)运算结果:1 0 0 1 左移<< 和 右移>> 左移 右边空出的位用0填补 高位左移溢出则舍弃该高位 右移 左边空出的位用0或者1填...阅读全文

博文 2017-10-29 06:04:40 酒肉穿肠过

Notepad++配置Golang开发环境

简述 Notepad++ 不支持 Go 语言的立即使用,可以为其安装 GOnpp 插件。安装之前,需要先配置好 Go 的环境。 简述 安装 Go 开发插件 配置语法高亮 更多参考 安装 Go 开发插件 运行 Notepad++ 软件 打开菜单,选择:插件 -> Plugin Manager -> Show Plugin Manager 选择插件 GOnpp,点击 Install,进行安装 重启 Notepad++ 写一段简单的 Go 代码进行测试: package main import ( "fmt" ) func main() { fmt.Println("Hello World!") } 选择菜单:插件 -> GOnpp -> go run。这时,会在右边栏或正下方输出结果。 配置语法...阅读全文

博文 2016-11-09 11:00:04 u011012932

POJ 1047 Round and Round We Go 循环数新解

题目描述: 给定一字符串表示的高精度数,判断它是否是可循环的。如果假设字符串num的长为n,则将num从1开始乘到n,如果每次得到的结果包含的字符元素都和a是相同的,则它是可循环的。 解题思路: 初看这一题,想到的解法是利用高精度数的乘,计算出num乘以1到n的结果,再与num进行对比。这种方法较为简单,可以得到正确的结果,但是效率并不是很理想。对于循环数,我们最常见到的是循环小数,而这一题的解法也是由此引申得出的。 初等数论里面有以下三个定理: 欧拉定理:设a、m为整数,m>1,(a,m)=1,则a^φ(m)≡1 (mod m)。 整数的次数:a、m为整数,m>1,(a,m)=1,k是使a^k≡1 (mod m)成立的最小正整数,则k叫做a对模m的次数。 次数定理:设a对模m的次数为k,n...阅读全文

博文 2016-02-05 07:00:01 furney

go 正则使用

正则可以高效对一段固定模式的内容,进行提取,例如从urlhttp://blog.jiguba.cn/2018/01... 正则模版 template=^http://blog.jiguba.cn/([\d]{4})/([\d]{2})/([\d]{2})/([w-]+).html$ 实现代码 package main import ( "fmt" "regexp" ) func main() { flysnowRegexp := regexp.MustCompile(`^http://blog.jiguba.cn/([\d]{4})/([\d]{2})/([\d]{2})/([w-]+).html$`) params := flysnowRegexp.FindStringSubmatch("...阅读全文

博文 2018-08-12 01:35:00 暮雨