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

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

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

【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

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 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

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

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语言实现遍历目录,及查找特定的文件类型

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

golang中的数组

概念:指同一系列同一类型数据的集合。声明方法如下:[32]byte //长度为32的数组[2*N] struct { x, y int32} //复杂类型的数组[1000]*float64 //指针数组[3][5]int //二维数组[2][2][2]float64 //等同于[2]([2]([2]float64))获取数组长度:arrLength := len(arr)遍历数组方法如下:方法一:for i:=0; i阅读全文

博文 2017-02-09 18:25:46 yeleven

用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语言遍历目录中的文件

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

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语言(遍历文件夹)

今天来讲一个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语言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 ``` - 以下是存储数据结构示意 ...阅读全文

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中map的操作与使用(增删改查)

// code_014_map_operator project main.go package main import ( "fmt" ) func DeleteMap(m map[int]string, key int) { delete(m, key) for k, v := range m { fmt.Printf("len(m)=%d, %d ----> %s\n", len(m), k, v) } } func main() { //赋值-->修改和追加 m1 := map[int]string{1: "ck_god", 2: "god_girl"} m1[1] = "xxx" m1[3] = "lily" //追加,go底层自动为map分配空间 fmt.Println(m1) ...阅读全文

博文 2018-10-05 14:35:08 ck_god

golang map遍历

map 遍历 遍历的顺序是随机的 基本的遍历方式 func main() { m := map[string]int{ "a": 1, "b": 2, } for k, v := range m { fmt.Println(k, v) } } /* 可能的输出之一 a 1 b 2 */ /* 可能的输出之二 b 2 a 1 */ 遍历的时候元素的顺序是随机的,有可能先输出a,也有可能先输出b 在遍历中增加元素 在遍历的同时增加元素,增加的元素是可以被遍历到的 func main() { m := map[string]int{ "a": 1, "b": 2, } for k, v := range m { m["c"] = 3 fmt.Println(k, v) } } /* 输出 b 2 ...阅读全文

在golang中操作mysql数据库(2)实现查询数据操作

**遍历查询数据方法** ```go package main import ( "fmt" "database/sql" //导入mysql的驱动 _ "github.com/go-sql-driver/mysql" ) func main(){ //使用database/sql包中的Open连接数据库 db,err := sql.Open("mysql","root:root@tcp(localhost:3306)/test?charset=utf8") if err != nil { fmt.Println("连接数据库失败:",err) return } //使用DB的query方法遍历数据库数据 rows,err := db.Query("select * from `user`"...阅读全文

博文 2018-09-03 20:28:33 JimPang

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的顺序输出

Golang中map的遍历输出的时候是无序的,不同的遍历会有不同的输出结果,如果想要顺序输出的话,需要额外保存顺序,例如使用slice,将slice中排序,再通过slice的顺序去读取。 package main import ( "fmt" "sort" ) func main() { /* 声明索引类型为字符串的map */ var testMap = make(map[string]string) testMap["Bda"] = "B" testMap["Ada"] = "A" testMap["Dda"] = "D" testMap["Cda"] = "C" testMap["Eda"] = "E" for key, value := range testMap { fmt.Pri...阅读全文

博文 2020-03-27 01:32:43 DevilRoshan

Golang 用interface{} map 给struct赋值

在有些场景下,我们需要用一个map[string]interface{}, map的key是struct中的一个tag的值, value是需要赋值的值,我们可以使用reflect包来进行操作。 我们需要struct的指针,只有指针我们才能在函数中改变struct的值 根据指针获取struct的实例,Type 依次遍历struct的域,取出域中的tag和map中的key进行比较,然后比较域的Type和map中value的Type,如果相等就可以进行赋值了 贴代码: func SetValueByTag(result interface{}, tagName string, tagMap map[string]interface{}) error { t := reflect.TypeOf(re...阅读全文

博文 2019-02-16 08:34:43 siskinc

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 查找数组中最小数的泛型函数

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中的字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 Go语言的字符串的字节使用UTF-8编码标识Unicode文本,这样Golang统一使用UTF-8编码,中文乱码问题不会再困扰程序员。 字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。 下面介绍字符串的三种遍历方式,根据实际情况选择即可。 常规遍历方式: var str = "Hello world!" for i := 0; i < len(str); i++ { fmt.Printf("str[%d]=%c\n", i, str[i]) } 运行结果: image 该遍历方式==缺点==:遍历...阅读全文

博文 2018-07-16 20:34:48 波涛澎湃

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 通过reflect遍历struct并赋值 & 自动创建struct

了解和使用golang有一段时间了,由于项目比较赶,基本是现学现卖的节奏。最近有时间会在简书上记录遇到的一些问题和解决方案,希望可以一起交流探讨。 需求 在golang中,给定一组数据,例如map[string]interface{}类型的数据,创建一个对应的struct并赋值 简易实现 var data = map[string]interface{}{ "id": 1001, "name": "apple", "price": 16.25, } type Fruit struct { ID int Name string Price float64 } func newFruit(data map[string]interface{}) *Fruit { s := Fruit{ ID: ...阅读全文

博文 2019-06-13 02:02:40 gazellecon

Golang——for循环的两种用法

从大一开始学C++,所接触过的for循环只有一种方式,for (int i = 0; i < count; i++) {...}。后来接触了Java,知道Java 5 引入了一种新特性,可以通过for (a : aa)遍历整个数组。虽然知道,但是也没用过,因为之前那种方法足够了。 现在主力语言是Go。Go也支持传统的写法for i := 0; i < count; i++ {...}。同样,还有一种for i, a := range aa {...}。这个跟Java相比,除了能够遍历,还能得到当前遍历的索引值,所以在Go中,更倾向于后面这种方法,令活动更高。 今天要对一个数据进行遍历,对每个元素进行稍加修改,才发现,原来这两种方式是有很大区别的。当时使用第二种方式修改之后,一直发现没有修改成...阅读全文

博文 2017-02-09 12:25:07 Bryce

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

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

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

GORM 关联查询

定义了一个 User 和 Company, User 中可以包含多个 Company, 如下: type User struct { ID int `gorm:"TYPE:int(11);NOT NULL;PRIMARY_KEY;INDEX"` Name string `gorm:"TYPE: VARCHAR(255); DEFAULT:'';INDEX"` Companies []Company `gorm:"FOREIGNKEY:UserId;ASSOCIATION_FOREIGNKEY:ID"` CreatedAt time.Time `gorm:"TYPE:DATETIME"` UpdatedAt time.Time `gorm:"TYPE:DATETIME"` DeletedAt ...阅读全文

博文 2018-12-05 11:34:43 jouyouyun

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

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的依赖管理

最近使用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

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

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

[笔记]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

golang之树的遍历

go语言在区块链编程中有巨大的优势,其中fabric和ethereum都是基于go语言编写的。为了能更好的学习区块链的底层技术,先将go的基础打好。 本篇文章使用golang来实现树的遍历 树的定义 package tree type Node struct { Val int Left *Node Right *Node } 深度优先遍历 深度优先遍历需要优先使用栈 栈的定义 type Stack struct { list *list.List } func NewStack() *Stack { list := list.New() return &Stack{list} } func (stack *Stack) Push(value interface{}) { stack.lis...阅读全文

博文 2018-11-18 14:34:42 菟潞寺沙弥

GOLANG 遍历文件夹

package main import ( "fmt" . "io/ioutil" ) func readAll(path string) []string { var all_file []string finfo, _ := ReadDir(path) for _ ,x := range finfo { real_path := path + "/" + x.Name() //fmt.Println(x.Name()," ",x.Size()) if x.IsDir() { fmt.Println(x.Name()," ",x.Size()) all_file = append(all_file,readAll(real_path)...) }else { all_file = appe...阅读全文

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

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语言 使用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

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中赋值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

golang map输出排序

由于GoLang Map 内部存储是无序的,当需要按顺序获得map存储的key -value值时,应该对遍历出来的结果进行重新排序; 在go 1.8版本后,提供的slice sort 功能使排序更简单: package main import ( "fmt" "sort" ) func main() { m := map[string]int{ "something": 10, "yo": 20, "blah": 20, } type kv struct { Key string Value int } var ss []kv for k, v := range m { ss = append(ss, kv{k, v}) } sort.Slice(ss, func(i, j int) boo...阅读全文

博文 2018-06-07 15:30:02 dpf-10

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

获取可用的网卡

~~~ 以上 如果不写这个判断 默认直接输出a[0] 得到的是本地连接** ,正常的 按序号排列 但是我想加个 在判断下是否 网卡可用的时候 就出现了问题了 一直输出 否则! if a[i].Flags == net.FlagUp 这句不就是判断 遍历的时候 先检测这个网卡是否正常 吗? a, err := net.Interfaces() if err != nil { fmt.Println(err) return } for i := 0; i < len(a); i++ { if a[i].Flags == net.FlagUp { fmt.Println(a[i].Name, a[i].HardwareAddr) } el...阅读全文

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 别人说我名字很长