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

golang语言中map的初始化及使用

// 先声明map var m1 map[string]string // 再使用make函数创建一个非nil的map,nil map不能赋值 m1 = make(map[string]string) // 最后给已声明的map赋值 m1["a"] = "aa" m1["b"] = "bb" // 直接创建 m2 := make(map[string]string) // 然后赋值 m2["a"] = "aa" m2["b"] = "bb" // 初始化 + 赋值一体化 m3 := map[string]string{ "a": "aa", "b": "bb", } // ========================================== // 查找键值是否存在 if v,...阅读全文

博文 2015-02-13 15:00:02 YanJiangbo

【GoLang笔记】遍历map时的key随机化问题及解决方法

之前的一篇笔记曾分析过,Go的map在底层是用hashmap实现的。由于高效的hash函数肯定不是对key做顺序散列的,所以,与其它语言实现的hashmap类似,在使用Go语言map过程中,key-value的插入顺序与遍历map时key的访问顺序是不相同的。熟悉hashmap的同学对这个情况应该非常清楚。 所以,本文要提到的肯定不是这个,而是一个比较让人惊奇的情况,下面开始说明。 1. 通过range遍历map时,key的顺序被随机化 在golang 1.4版本中,借助关键字range对Go语言的map做遍历访问时,前后两轮遍历访问到的key的顺序居然是被随机化的! 这个现象在其它语言中是很少见的,比如C语言实现hashmap时,通常会用数组(即一段连续的内存空间)来存key,虽然key的...阅读全文

博文 2015-04-02 19:00:01 slvher

map按key和按value排序

看一个题: 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 例示: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 从低到高 smith 67 Tom 70 jack 70 peter 96 1、按照value排序 2、可以递增排序和递减排序 3、保证排序的稳定性 golang map按key排序 //golang的map不保证有序性,所以按key排序需要取出key,对key排序,再遍历输出value package main import ( "fmt" "sort" ) func main() { // To c...阅读全文

博文 2017-07-31 04:06:16 zengfan

go 中的字符串遍历

首先看下以下例子: package main import "fmt" func main(){ s := "我是中国人" for i:=0; i < len(s); i++{ fmt.Printf("%c", s[i]) } fmt.Printf("\n") for _, v := range s { fmt.Printf("%c", v) } fmt.Print("\n") } 输出结果: 我是中国人 我是中国人 通过len(s)和range遍历访问字符串元素有什么不同么? 首先来复习一下go语言的字符串表示,go语言有以下两种表示字符串的方法: 1、双引号,如:“gogogo\n”,使用转义字符 2、反引号,如:`gogogo\n`,不使用转义字符,字符串的内容将和...阅读全文

博文 2014-10-04 19:26:22 ricktian1226

Go语言笔记:struct结构遍历

package main import ( "fmt" "reflect" ) type User struct { Id int Name string //addr string } func main(){ u := User{Id:1001, Name:"xxx"/*, addr:"xxx"*/} t := reflect.TypeOf(u) v := reflect.ValueOf(u) for k := 0; k < t.NumFiled(); k++ { fmt.Printf("%s -- %v \n", t.Filed(k).Name, v.Field(k).Interface()) } }注:当结构体中含有非导出字段时,v.Field(k).Interface()会pani...阅读全文

博文 2016-01-28 12:00:01 qdx411324962

用go语言遍历文件夹

用python遍历文件夹很方便,在go的世界里,我也需要这样的功能。找了找文档,里面有这个功能(具体参考这里:http://golang.org/pkg/path/filepath/ )…… 好,不废话了,我也想早点睡,直接上代码。 代码如下: /* File : getFilelist.go Author : Mike E-Mail : Mike_Zhang@live.com */ package main import ( "path/filepath" "os" "fmt" "flag" ) func getFilelist(path string) { err := filepath.Walk(path, func(path string, f os.FileInfo, err er...阅读全文

博文 2014-10-04 19:26:20 MikeZhang

Go语言参数中的三个点是干什么的

Go语言函数中有三个点...表示为可变参数,可以接受任意个数的参数。 示例代码: package main import "fmt" func Greeting(prefix string, who ...string) { fmt.Println(prefix) //接收到who是一个数组,可以用for遍历。 for _, name := range who { fmt.Println(name) } } func main() { Greeting("Hello:", "tom", "mike", "jesse") } 输出结果: Hello: tom mike jess...阅读全文

博文 2015-03-04 03:00:02 baiyuxiong

go语言实现遍历目录,及查找特定的文件类型

1 // filelist.go 2 package main 3 4 import ( 5 //"flag" 6 "fmt" 7 "os" 8 "path/filepath" 9 "strings" 10 ) 11 12 var ( 13 ostype = os.Getenv("GOOS") // 获取系统类型 14 ) 15 16 var listfile []string //获取文件列表 17 18 func Listfunc(path string, f os.FileInfo, err error) error { 19 var strRet string 20 strRet, _ = os.Getwd() 21 //ostype := os.Getenv("GOOS") // ...阅读全文

博文 2014-10-04 19:26:45 sn-dnv-aps

go 数组和数组切片比较

一、数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列。 (1)数组的创建。 数组有3种创建方式:[length]Type 、[N]Type{value1, value2, ... , valueN}、[...]Type{value1, value2, ... , valueN} 如下: 复制代码 代码如下: func test5() { var iarray1 [5]int32 var iarray2 [5]int32 = [5]int32{1, 2, 3, 4, 5} iarray3 := [5]int32{1, 2, 3, 4, 5} iarray4 := [5]int32{6, 7, 8, 9, 10} iarray5 := [...]int32{11, 12...阅读全文

博文 2015-05-26 05:00:00 wenlovingliu

Go语言for```range方法遍历map,遍历打印值与map实际存储值不同

> 今天编写了map结构数据存储程序,map的key总数:22046个,通过for```range方法遍历map发现,遍历打印的结果与实际存储内容不符,主要是存储结果数量和值正确,打印出来的值少了。 - 以下是打印结果 ```go keys:0xE7A0 values:0x942E keys:0xE9E6 values:0x6B92 keys:0xF5F2 values:0x8E9C keys:0xF7F0 values:0x9EDF ======================= 以上使用range遍历结果 ==================== 获取0xFE4E值:0xFA28 总数:22046 ``` - 以下是存储数据结构示意 ...阅读全文

go语言遍历目录中的文件

package main import ( "fmt" "io/ioutil" "os" // "path/filepath" // "strings" ) var ( files []string ) //获取指定目录下的所有文件和目录 func ListDir(dirPth string) ( err error) { //fmt.Println(dirPth) dir, err := ioutil.ReadDir(dirPth) if err != nil { return err } PthSep := string(os.PathSeparator) // suffix = strings.ToUpper(suffix) //忽略后缀匹配的大小写 for _, fi := rang...阅读全文

博文 2015-12-22 10:00:04 woquNOKIA

golang之array

数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length)。 √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式(在编译期即可计算结果的表达式)。golang数组长度是一个内置常量,可以用len()函数来获取。 √ golang数组是一个值类型,在赋值和作为参数传递时都将产生一次复制动作,因此在函数体中无法修改传入的数组的内容。 • 数组声明和初始化 ▶ 数组声明 ▪ 语法如下 // 数组声明 var array [n]Type // 数组声明和初始化 var array [n]Type = [n]Type{v1, v2, ..., vn} var array = [n]Type{v1, v2, ....阅读全文

博文 2016-02-20 03:00:04 heartchord

Golang(Go语言)代码技巧之字符串(string)

改变字符串中的某些字符 str := "hello roc"bytes := []byte(str)bytes[1] = 'a'str = string(bytes) //str == "hallo roc" 截取子串 substr := str[n:m] //截取从索引n到m-1的子串 遍历字符串 //for遍历,此方式只能遍历存放ASCII//编码的字符串,比如中文就不行for i := 0; i < len(str); i++ { //... = str[i]}//for-range遍历,此方式可以遍历Unicode//编码的字符串,不担心乱码for index, char := range str { fmt.Printf("%d %c\n",index,char)} 计算字符串长度...阅读全文

博文 2016-02-24 22:00:06 QQ245671051

golang map 用range遍历不能保证顺序输出

按照之前我对map的理解,map中的数据应该是有序二叉树的存储顺序,正常的遍历也应该是有序的遍历和输出,但实际试了一下,却发现并非如此,网上查了下,发现从Go1开始,遍历的起始节点就是随机了,当然随机到什么程度还不清楚。 package main import ( "fmt" ) func main() { x := make(map[int]int) for i := 0; i < 30; i++ { x[i] = i } for k, v := range x { fmt.Println(k, v) } } build后,多次执行,每次输出的结果都不同。当然,用 fmt.Println("map: ", x) 输出同样是无序的结果 参考http://xhrwang.me/2014/12/...阅读全文

博文 2016-06-13 13:00:03 hificamera

Go语言(遍历文件夹)

今天来讲一个Go语言操作文件的问题,即如何遍历一个文件夹下的所有文件。 代码如下 package main import ( "path/filepath" "os" "fmt" "flag" ) func getFilelist(path string) { err := filepath.Walk(path, func(path string, f os.FileInfo, err error) error { if f == nil { return err } if f.IsDir() { return nil } println(path) return nil }) if err != nil { fmt.Printf("filepath.Walk() returned %v\n...阅读全文

博文 2015-06-17 23:00:30 ACHelloWorld

go语言的GC

mark&sweep, 2分钟保证至少一次GC过程,如果分配的总内存超过上次分配的总内存一定比例(默认100%)后进行一次GC进行mark的过程中,会停止一切G的运行,mark的过程是多任务并发的sweep的过程是分散的 mark过程 整个程序内存块包括 .data, .bss, 每个G的stack, SpecialFinalizer每段内存都有其相应的bitmap,用来表示每个word(8BYTE)的标志位,每word需要4bit的标志位mark的过程就是递归遍历内存块bitmap的过程word标志位有如下3种类型: 标量 指针 连续两个word表示一个iface或eface // scanblock scans a block of n bytes starting at pointer...阅读全文

博文 2015-05-18 03:00:01 richmonkey

golang 查找数组中最小数的泛型函数

golang里要实现查找数组最小数的泛型函数,需要用到类型开关。 gol的类型开关写法: switch v.(type) { case int: case float64: case string: } 思路就是遍历数组,遇到更小的数保存下来,函数退出返回那个数。 golang代码: package main import ( "fmt" ) func Minimum(first interface{}, rest ...interface{}) interface{}{ minimum := first for _, v := range rest { switch v.(type) { case int: if v := v.(int); v < minimum.(int) { mini...阅读全文

博文 2015-05-31 13:00:01 guonaihong

Go的依赖管理

最近使用Go语言写了一个线上Session复制工具。对Go工程的依赖管理感到很是不满意。不满意的原因有以下几点。 过度依赖仓库,甚至将仓库的网址作为命名空间。 不能支持指定版本或者tag。 根据对Go的依赖管理的观察,可以观察到以下几点。 在执行go get的时候会扫描import的部分 将依赖拉取到src目录下面,并进行前一个步骤 当所有的依赖都拉取完成后,直接使用广度优先搜索算法搜索依赖图并进行编译。 那么解决方法就非常简单了。 设计一个配置文件,用来指定每个项目的branch或tag 将所有项目从仓库牵出到指定的brnach或tag上 扫描所有文件的import部分,构建编译的依赖关系图 广度优先遍历依赖关系图,进行编译 玩Go不久,不知道是否有更高级的方案或者已有的方案解决Go工程...阅读全文

博文 2014-11-22 17:00:01 David_Alpha_Fox

go语言的hashmap

go语言中map的数据结构,以下只摘取了关键的几个属性: struct Bucket { uint8 tophash[BUCKETSIZE]; // top 8 bits of hash of each entry (0 = empty) Bucket *overflow; // overflow bucket, if any byte data[1]; // BUCKETSIZE keys followed by BUCKETSIZE values }; struct Hmap { uint8 B; // log_2 of # of buckets (can hold up to LOAD * 2^B items) byte *buckets; // array of 2^B Bucket...阅读全文

博文 2015-05-18 03:00:01 richmonkey

golang中比较2个slice

这是用双for的方法实现了2个slice的比较,方法很土,但思路直观 // FuncTest project main.go package main import ( "fmt" ) //检查slice b是否在slice a中 //需要比对的2个slice分别是a和b //isSame 比对的2个slice是否相同 //diffSlice 如果2个slice不同,那么不同的元素将储存在其中 func checkSliceBInA(a []string, b []string) (isIn bool, diffSlice []string) { lengthA := len(a) for _, valueB := range b { temp := valueB //遍历取出B中的元素 f...阅读全文

博文 2016-03-28 15:00:01 u012210379

Go语言中查询SqlServer数据库

一、Go语言中查询MsSQL数据库: // main.go package main import ( "database/sql" "fmt" "log" "time" _ "github.com/denisenkom/go-mssqldb" ) func main() { var isdebug = true var server = "localhost" var port = 1433 var user = "sa" var password = "123456xx" var database = "MyTestDB" //连接字符串 connString := fmt.Sprintf("server=%s;port%d;database=%s;user id=%s;password...阅读全文

博文 2016-09-09 18:00:02 songxingzhu

gb2312_to_utf8.go

package main import ( "fmt" "io/ioutil" "os" "path/filepath" "strings" iconv "github.com/djimenez/iconv-go" ) //获取指定目录下的所有文件,不进入下一级目录搜索,可以匹配后缀过滤。 func ListDir(dirPth string, suffix string) (files []string, err error) { files = make([]string, 0, 10) dir, err := ioutil.ReadDir(dirPth) if err != nil { return nil, err } PthSep := string(os.PathSeparato...阅读全文

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

[笔记]Go语言在Linux环境下输出彩色字符

Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例: fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B) 其中0x1B是标记,[开始定义颜色,1代表高亮,40代表黑色背景,32代表绿色前景,0代表恢复默认颜色。显示效果为: 下面代码遍历全部显示效果。 package main import ( "fmt" ) func main() { fmt.Println("") // 前景 背景 颜色 // --------------------------------------- // 30 40 黑色 // 31 41 红色 // 32 42 绿色 // 33 43 黄色 /...阅读全文

博文 2015-03-07 03:00:01 journeyonmyway

go map用法

本文实例讲述了GO语言映射(Map)用法。分享给大家供大家参考。具体如下: 映射是一种内置的数据结构,用来保存键值对的无序集合。 (1)映射的创建 make ( map [KeyType] ValueType, initialCapacity ) make ( map [KeyType] ValueType ) map [KeyType ] ValueType {} map [KeyType ] ValueType { key1 : value1, key2: value2, ... , keyN : valueN} 如下,用4种方式分别创建数组,其中第一种和第二种的区别在于,有没有指定初始容量,不过使用的时候则无需在意这些,因为map的本质决定了,一旦容量不够,它会自动扩容: 复制代码代码...阅读全文

博文 2015-10-14 11:00:02 徐学良

go-map

package main import "fmt" /** 声明 var m map[int]string var b a := 赋值 map[int]string{} map[int]string{1: "a", 2: "b", 4: "c"} make(map[int]string) */ func main() { var m map[int]string m = map[int]string{} fmt.Println(m) var n map[int]string n = make(map[int]string) fmt.Println(n) var b = make(map[int]string) fmt.Println(b) a := make(map[int]string) ...阅读全文

博文 2016-08-14 12:00:00 u013210620

go for循环

快速入门 for i := 1; i <= 10; i++ { fmt.Println(i) } 流程图 for循环注意事项和细节 1、循环条件是返回一个布尔值的表达式 2、 for 循环的第二种使用方式 for 循环判断条件 { //循环执行语句 } //将变量初始化和变量迭代写到其它位置 示例: j := 1 for j <= 10 { fmt.Println("hello....", j) j++ } 3、 for 循环的第三种使用方式 for { //循环语句 } 等价:for ; ; { } 是个无限循环,需要配合break语句来用 示例: k := 1 for { //等价 for ; ; { } if k <= 10 { fmt.Println("ok...", k) } el...阅读全文

博文 2019-02-23 21:34:43 StevenQin

golang中赋值string到array

要把一个string赋值给一个array,哥哥遇到一个纠结的困难,研究一番,发现主要原因是array和slice在golang里不是一个东西,本文提供两种解决方案。 在网络编程中network packet transfer,经常要定义固定的字节长度,如下面的f1: package main import "fmt" type T1 struct { f1 [5]byte // I use fixed size here for file format or network packet format. f2 int32 } func main() { t := T1{"abcde", 3} // t:= T1{[5]byte{'a','b','c','d','e'}, 3} // work...阅读全文

博文 2015-06-17 20:04:04 songbohr

内部排序算法(Golang版本)

package main import ( "fmt" ) func main() { //保存需要排序的Slice arr := []int{9, 3, 4, 7, 2, 1, 0, 11, 12, 11, 13, 4, 7, 2, 1, 0, 11, 12, 11} //实际用于排序的Slice list := make([]int, len(arr)) copy(list, arr) BubbleSortX(list) fmt.Println("冒泡排序:\t", list) copy(list, arr) QuickSort(list, 0, len(arr)-1) fmt.Println("快速排序:\t", list) copy(list, arr) //将arr的数据覆盖到li...阅读全文

博文 2015-11-23 03:00:00 achst

Go map中一个很重要的特性

先看一段代码: func main() { m := make(map[int]string) m[1] = "a" m[2] = "b" m[3] = "c" for k, v := range m { fmt.Println(k, v) } fmt.Println("-----------------") mm := make(map[int]string) mm[1] = "a" mm[2] = "b" mm[3] = "c" for k, v := range mm { fmt.Println(k, v) } fmt.Println("-----------------") mmm := make(map[int]string) mmm[1] = "a" mmm[2] = "b" m...阅读全文

博文 2015-05-12 03:00:01 cobbliu

golang slice 遍历删除

在slice中遍历删除满足条件的项 如下示例为,在一个数字切片中,遍历删除6以下的,保留6以上的数字 package main import "fmt" /*slice 遍历删除示例*/ func main() { //定义一个数字切片 ageList := []int{1, 3, 7, 7, 8, 2, 5} //遍历删除6以下的 for i := 0; i < len(ageList); { if ageList[i] < 6 { ageList = append(ageList[:i], ageList[i+1:]...) } else { i++ } } fmt.Printf("after del:%v", ageList) } 输出 after del:[7 7 8...阅读全文

博文 2018-11-13 22:34:39 小风吹的我乱了

Go字典

字典(map)是Go语言内置的数据结构,一组键值对的无序集合。 看代码: package main import "fmt" func main() { //使用make申请一个map,键为string类型,值为int类型 m := make(map[string]int) //设置值 m["k1"] = 7 m["k2"] = 13 //取指定键的值 v1 := m["k1"] fmt.Println("v1: ", v1) //取长度 fmt.Println("len:", len(m)) //遍历 for key, value := range m { fmt.Println(key, ":" , value) } //删除 delete(m, "k2") fmt.Println("m...阅读全文

博文 2015-03-20 03:00:01 baiyuxiong

golang笔记——map

ages := make(map[string]int) // mapping from strings to ints 我们也可以用map字面值的语法创建map,同时还可以指定一些最初的key/value: ages := map[string]int{ "alice": 31, "charlie": 34, } 这相当于 ages := make(map[string]int) ages["alice"] = 31 ages["charlie"] = 34 使用内置的delete函数可以删除元素: delete(ages, "alice") // remove element ages["alice"] Map的迭代顺序是不确定的,并且不同的哈希函数实现可能导致不同的遍历顺序。在实践中,...阅读全文

博文 2016-03-27 15:00:01 tianyajuanke

golang中赋值string到array

要把一个string赋值给一个array,哥哥遇到一个纠结的困难,研究一番,发现主要原因是array和slice在golang里不是一个东西,本文提供两种解决方案。 在网络编程中network packet transfer,经常要定义固定的字节长度,如下面的f1: package main import"fmt" type T1 struct{ f1 [5]byte// I use fixed size here for file format or network packet format. f2 int32 } func main(){ t := T1{"abcde",3}// t:= T1{[5]byte{'a','b','c','d','e'}, 3} // work, but ...阅读全文

博文 2014-10-04 19:25:59 riskyer

go语言string遍历细节

/** * Created by Administrator on 13-12-18. */ package main import ( "fmt" "os" ) func main() { str := "hello, 世界" n := len(str) for i := 0; i < n; i++ { fmt.Fprintf(os.Stdout, "%d %v %c\n", i, str[i], str[i]) } fmt.Fprintf(os.Stdout, "---------------\n") for i , v := range str { fmt.Fprintf(os.Stdout, "%d %v %c\n", i, v, v) } fmt.Fprintf(os.Stdout...阅读全文

博文 2015-06-17 23:02:37 eclipser1987

golang中赋值string到array

常州程序员交流QQ群:123957473 要把一个string赋值给一个array,哥哥遇到一个纠结的困难,研究一番,发现主要原因是array和slice在golang里不是一个东西,本文提供两种解决方案。 在网络编程中network packet transfer,经常要定义固定的字节长度,如下面的f1: package main import "fmt" type T1 struct { f1 [5]byte // I use fixed size here for file format or network packet format. f2 int32 } func main() { t := T1{"abcde", 3} // t:= T1{[5]byte{'a','b','c'...阅读全文

博文 2014-10-04 19:25:59 meizhenfen42

golang遍历某个目录下的文件,并读取文件名到一个csv文件

package main import ( "encoding/csv" "fmt" "os" "path/filepath" "container/list" ) var outputFileName string = "filesName.csv" func CheckErr(err error) { if nil != err { panic(err) } } func GetFullPath(path string) string { absolutePath, _ := filepath.Abs(path) return absolutePath } func PrintFilesName(path string) { fullPath := GetFullPath(path) l...阅读全文

博文 2015-06-18 17:05:37 rufidmx

NoSQL数据库gkvdb

Go语言开发的基于DRH(Deep-Re-Hash)深度哈希分区算法的高性能Key-Value嵌入式数据库。 ## 特点 1. 基于纯Go语言实现,具有优异的跨平台性; 1. 数据库文件采用DRH算法设计,提升对随机数据的操作性能; 1. 良好的IO复用设计,提升对底层数据库文件的操作性能; 1. 良好的高可用设计,保证在任何异常情况下数据的完整性; 1. 提供的基本操作接口:Set()、Get()、Remove(); 1. 提供的事务操作接口:Begin()、Commit()、Rollback(); 1. 提供的多表操作接口:Table()、SetTo()、GetFrom()、RemoveFrom(); 1. 支持原子操作、批量操作、事务操作、多表操作、多表事务、随机...阅读全文

开源项目 2017-11-23 07:07:16 john

golang实现树遍历

package main import ( "container/list" "fmt" "strings" ) type MyStack struct { List *list.List } type MyQueue struct { List *list.List } type BinaryTree struct { Value interface{} Left *BinaryTree Right *BinaryTree } type Tree struct { Value interface{} Children []*Tree } func (stack *MyStack) pop() interface{} { if elem := stack.List.Back(); elem ...阅读全文

博文 2017-12-13 02:00:00 show668

go map的使用

欢迎关注go语言微信公众号 每日go语言 golang_everyday go中map用于存储健值对。map格式: map[KeyType]ValueType 声明一个map,键为字符型,值为int型: m := make(map[string]int) map中添加值: m["a"] = 1 获取map中值: fmt.Println(m["a"]) 输出结果:1 获取值同时判断是否存在该值 v,exists := m["a"] fmt.Printf("%d %t",v,exists) 输出: 1 true 遍历map for key, value := range m { fmt.Println("Key:", key, "Value:", value) } 输出: Key: a Valu...阅读全文

博文 2015-05-19 03:00:11 baiyuxiong

Golang中高效拼接字符串

Go中可以使用“+”合并字符串,但是这种合并方式效率非常低,每合并一次,都是创建一个新的字符串,就必须遍历复制一次字符串。Java中提供StringBuilder类来解决这个问题。Go中也有类似的机制,那就是Buffer。 以下是示例代码: package main import ( "bytes" "fmt" ) func main() { var buffer bytes.Buffer for i := 0; i < 1000; i++ { buffer.WriteString("a") } fmt.Println(buffer.String()) } 使用bytes.Buffer来组装字符串,不需要遍历,只需要将添加的字符串放在缓存末尾即...阅读全文

博文 2017-07-11 09:09:36 TomorrowWu

goLang文件遍历

package main import ( "fmt" "io/ioutil" "os" "path/filepath" "strings" ) //获取指定目录下的所有文件,不进入下一级目录搜索,可以匹配后缀过滤。 func ListDir(dirPth string, suffix string) (files []string, err error) { files = make([]string, 0, 10) dir, err := ioutil.ReadDir(dirPth) if err != nil { return nil, err } PthSep := string(os.PathSeparator) suffix = strings.ToUpper(suffix) /...阅读全文

博文 2016-08-29 12:00:00 zhangym

GO语言 使用hash 表

package main import ( "fmt" ) type Data struct{ date string; value int; } func main() { fmt.Printf("hello world!\n"); var m = make(map[string]int); //创建一个空白的hash m["str1"] = 10; m["str2"] = 1000; fmt.Printf("%d\n",m["str1"]); // 遍历 hash for name,value := range m { fmt.Printf("%s\t%d\n",name,value); } ...阅读全文

博文 2015-06-17 23:07:37 juxuny

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

Golang 与 zTree

package main import ( "encoding/json" "fmt" "os" "path/filepath" "sort" ) func main() { rootpath := "D:\\projects" root := FileNode{"projects", rootpath, []*FileNode{}} fileInfo, _ := os.Lstat(rootpath) walk(rootpath, fileInfo, &root) data, _ := json.Marshal(root) fmt.Printf("%s", data) } type FileNode struct { Name string `json:"name"` Path string...阅读全文

博文 2015-04-05 11:18:10 88250

golang走起(三)list简单使用和interface{}

golang走起(三)list简单使用和interface{} 代码如下: package main import ( "container/list" "fmt" ) type Person struct { age int } func main() { l := list.New() for i := 0; i < 5; i++ { p := Person{age: i * 10} l.PushBack(p) } for i := 5; i < 10; i++ { l.PushBack(i) } i := 0 // 遍历 for v := l.Front(); v != nil; v = v.Next() { if i > 4 { c := v.Value.(int) fmt.Prin...阅读全文

博文 2016-04-18 18:00:05 zjp114695092

go切片

本文实例讲述了GO语言数组和切片的用法。分享给大家供大家参考。具体分析如下: 一、数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列。 (1)数组的创建。 数组有3种创建方式:[length]Type 、[N]Type{value1, value2, ... , valueN}、[...]Type{value1, value2, ... , valueN} 如下: 复制代码 代码如下: func test5() { var iarray1 [5]int32 var iarray2 [5]int32 = [5]int32{1, 2, 3, 4, 5} iarray3 := [5]int32{1, 2, 3, 4, 5} iarray4 := [5]int32{6, 7,...阅读全文

博文 2016-06-29 02:00:03 zhangym