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

golang 笔记

import "x/y/z" //实际上是去找name.a //自己把这个想象成路径 fmt.printf; //把fmt想象成类(对象) go build 包名默认就是目录名。生成的a文件也是目录名。 [delphi@z220 test]$ tree . . ├── inc │ └── func.go └── test.go //inc/func.go 实际上会生成 test/inc.a文件 package pkgfunc import "fmt" func MyFunc() { fmt.Println("Myfunc") } //test.go package main import "test/inc" func main() { pkgfunc.MyFunc() } go run t...阅读全文

博文 2015-08-18 17:00:01 明月惊鹊

Golang --- 几点易错的地方

总结了 自己在学习中 不太懂得地方。 记录在这里,如果可以给大家提供了帮助,最好不过! import 只有 import 一个包之后,才可以使用这个包名,和这个包中的函数。 一个包中含有(公有的): 公有函数 (只能通过包名访问) 对象的方法 (通过对象调用) 公有的 类型 (通过包名访问) 所以在调用一个包中的方法的时候,前面肯定有一个点 “.” (点的签名 可能是 包名 也可能是 对象名称) 公有的类型 和方法 记住一定是大写的! fmt.Println(a, b, c) 在打印 a, b, c的时候,会自动用 ”空格“ 给隔开。 可以使用 range 关键字 对 slice 和map 进行遍历 使用字节数组的时候,注意字节数组的长度。尤其在向函数传递字节数组的时候 package ma...阅读全文

博文 2015-03-30 10:00:17 xiaorenwuzyh

LeetCode105. 从前序与中序遍历序列构造二叉树

描述 根据一棵树的前序遍历与中序遍历构造二叉树 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路 前序遍历中,第一个节点即根节点 在中序遍历中,找出第一个节点的位置,根节点前面的 L 个数据,即根节点左子树的中序遍历数据,前序遍历中根节点后面的 L 个数据即左子树的前序遍历 右子树同上 简而言之,确定了根节点,确定了左子树和右子树的数据,递归对左子树和右子树进行重建 代码实现 // 根据一棵树的前序遍历与中序遍历构造二叉树 // TreeNode Definition for a binary tree no...阅读全文

博文 2018-12-15 12:34:50 tomorrowwu

【Leetcode】:242. Valid Anagram问题 in Go语言

Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = "anagram", t = "nagaram", return true. s = "rat", t = "car", return false. Note: You may assume the string contains only lowercase alphabets. Follow up: What if the inputs contain unicode characters? How would you adapt your solution to such case? 这个问...阅读全文

博文 2016-05-23 00:00:03 u013564276

go语言map排序实现(一劳永逸)

我们在日常开发中,或多或少会经常需要对map进行排序,这里就带大家实现对map排序的封装 调用简单,使用方便 支持对int int8 int16 int32 int64 float64 float32 string作为key的map进行排序遍历 思路 通常我们对map进行排序都是先将key存储到一个slice中,之后对其进行排序操作,但是封装起来会遇到以各种类型作为key和value的map,这种情况我们按照如下方法来克服 声明一个拥有两个入参的函数,用来完成我们的操作,即func EachMap(eachMap interface{}, eachFunc interface{}) eachMap :传入map,因为是interface{},所以只要是map都能够传入 eachFunc :接...阅读全文

博文 2019-12-10 21:32:43 KercyLan

golang的应用程序异常结束----各位大神帮忙分析下

**加了段代码后,程序跑个两三天就挂一次** 在原有的代码中加了一段如下的功能: 1 遍历文件夹,获取以“no_”命名开头的文件。 2 根据获取的结果做其他操作----------( SetLevel(curLevel) ) 下面是代码的主题 var curLevel int levelCheck := func(logPath string) { if logPath == "" { return } for { time.Sleep(time.Second * 30) s, err := ListLevelKeys(logPath) if err != nil...阅读全文

二叉树层序遍历BFS

leetcode 刷题记录 层序遍历模板,语言为 golang func bfs(p *TreeNode) []int { res := make([]int, 0) if p == nil { return res } queue := []*TreeNode{p} for len(queue) > 0 { length := len(queue) for length > 0 { length-- if queue[0].Left != nil { queue = append(queue, queue[0].Left) } if queue[0].Right != nil { queue = append(queue, queue[0].Right) } res = append(re...阅读全文

博文 2020-05-15 14:35:40 一位路过的假面骑士丶

PAT:05-1. List Components (25),Go语言解答

题目大概意思:给定一个有N个顶点和E个边的无向图,请分别用DFS和BFS遍历无向图。假定顶点编号为0到N-1,在遍历的时候总是从最小编号的顶点出发,在访问相邻结点的时候,按升序的方式访问。 For a given undirected graph with N vertices and E edges, pleaselist all the connected components by both DFS and BFS. Assume thatall the vertices are numbered from 0 to N-1. While searching,assume that we always start from the vertex with the smallestind...阅读全文

博文 2015-10-25 17:00:05 u013564276

for data:=range 通道中data定义了几次

本人刚学习go,再体验range 遍历通道的遍历之时,又产生了一些误解,对于for data:=range 通道中data我之前一直以为是每次for循环都会通过:=新定义一个data变量,但实际上并非如此,只是第一次会定义变量data,在后面的每次循环都是重复使用。这在官方文档里面,可以看到:The iteration variables may be declared by the "range" clause using a form of short variable declaration (:=). In this case their types are set to the types of the respective iteration values and their s...阅读全文

golang笔记——array

1、定义一个 array 数组长度也是类型的一部分,比如长度为3的int数组与长度为5的int数组,并不是同一类型。 package main import ( "strconv" //GO语言中将 int 转化成 string 比较麻烦,通常使用 strconv.Itoa(i) ) //格式化输出一个数组,因为不同长度的数组属于不同类型,这里只能用切片作为参数,调用时将数组转换成切片传入即可 func print_array(arr []int) { var str string str = "[" for k, v := range arr { if k == len(arr)-1 { str = str + strconv.Itoa(v) } else { str = str + st...阅读全文

博文 2016-03-04 08:00:00 tianyajuanke

GO语言按照深度遍历文件

常规方法不使用pathfilepath包 go的filepath包 go语言提供了大量的包,基于这些包我们可以完成很多有意思的事情,本节我们就来看看如何利用go语言来遍历文件。 常规方法(不使用path/filepath包) 比较直观的方式是,按照某个目录递归的方式便利文件: func walkDir(dirpath string, depth int){ if depth > DEPTH{//大于设定的深度 return } files, err := ioutil.ReadDir(dirpath)//读取目录下文件 if err != nil{ return } for _, file := range files{ if file.IsDir(){ walkDir(dirpath + ...阅读全文

博文 2016-09-03 05:00:02 sylar_d

golang版KMP算法 实现判断旋转词

参照java版的写的,作者学习golang,进过一番折腾终于对kmp算法了解了,有不对的地方改正 1 package main 2 3 import ( 4 "fmt" 5 // "strings" 6 ) 7 8 //判断是否为旋转词 9 func isRotation(a, b string) bool { 10 if a == "" || b == "" { //如果俩个输入的字符串为空的话 直接return false 11 return false 12 } 13 b2 := b + b //把b相加起来拼成长 串 14 return getIndexOf(b2, a) != -1 //如果getIndexOf 为-1 则返回false 15 } 16 17 func getInd...阅读全文

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

Round and Round We Go POJ 1047

Description A cyclic number is an integer n digits in length which, when multiplied by any integer from 1 to n, yields a"cycle"of the digits of the original number. That is, if you consider the number after the last digit to "wrap around"back to the first digit, the sequence of digits in both numbers will be the same, though they may start at diffe...阅读全文

博文 2016-01-31 06:00:00 JWMNEU

每天一道算法题:岛屿的个数

算法题:岛屿的个数 难度:中级 实现语言:golang 岛屿.png 思路:从顶点(0,0)开始,分别向左右上下遍历,遇见1设置为0,遇见0停止,遍历到4个方向都为1则加1 package main import "fmt" func main() { var graph1 = [5][5]int{ {1, 1, 0, 0, 0}, {1, 1, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 1, 1}, } graph1 = [5][5]int{ {1, 1, 1, 1, 0}, {1, 1, 0, 1, 0}, {1, 1, 0, 0, 0}, {0, 0, 0, 0, 0}, } var count int for i := 0; i < 5; i++ { ...阅读全文

博文 2018-07-03 22:34:43 one_zheng

Go by Example: For

For循环是Go语言唯一的循环结构。这里有三种基本的循环类型。 package main import "fmt" func main() { // 最基本的一种,单一条件循环 // 这个可以代替其他语言的while循环 i := 1 for i <= 3 { fmt.Println(i) i = i + 1 } // 经典的循环条件初始化/条件判断/循环后条件变化 //这个也是其他语言中的标准For循环 for j := 7; j <= 9; j++ { fmt.Println(j) } // 无条件的for循环是死循环,除非你使用break跳出循环或者 // 使用return从函数闭包中返回 for { fmt.Println("loop") break } } 输出: $ go run...阅读全文

博文 2015-06-17 23:08:09 codemanship

golang 编译大量的正则怎么优化

现在有100个正则放在数组里做文件内容的匹配,现在的写法是在 遍历文件时(很多,几千个文件),每次匹配之前 都编译了一遍,导致运行的时候 cpu 容易暴增到100。 挺费性能的 。现在想法是 能不能先把这些正则 都使用regexp.Compile 编译好,每次匹配文件内容的时候 就不需要再匹配了,直接reg.Find就好了。 求指导。 下图中 是现在的渣渣代码, rule是一个有100个正则的数组。 ![111.jpg](https://static.studygolang.com/171115/3341eb6fc383488cd2835dad38597d3f.jpg...阅读全文

golang 利用函数内匿名函数实现自己的递归

在做树的递归遍历按层遍历的代码的时候遇到一个问题就是这样 var ff = func (int) { ff() } 上面的代码编译不过去。 查找资料是这么讲的: We've written >100k lines of Go code and it has come up maybe once. That kind of frequency doesn't suggest that a language change is warranted. 意思就是说,在实际编码中遇到需要这种特性的几率很小很小,所以没有必要直接在语言层面去支持,如果偶然遇到就使用替代方案吧 当然也是有替代方案的 type funcType func(int) var f funcType f = func(i int)...阅读全文

博文 2020-03-22 04:32:44 世界之树weight

求教数据结构,golang实现出栈入栈覆盖第一个元素

**这个程序有问题,将元素入栈时,会覆盖第一个元素,最后栈中只留下一个2,求大神解答** ```go package main import ( "log" "fmt" ) type Stack struct { size int64 //栈的容量 top int64 //栈顶 data []interface{} } func MakeStack( size int64) Stack{ s :=Stack{} s.size=size s.data =make([]interface{},size) return s } //入栈,空间不足,逐段升高 func (s Stack) Push(e interface{}) bool{ if s.IsFull(){ log.Printf("栈满,...阅读全文

博文 2018-01-24 17:05:46 yinshidaoshi

刚接触go 请教下 类似java map嵌套list go的代码需要怎么写呢

现在有一组数据,如: | 编号(id) | 名称(name) | 分组(group) | | -------- | -------- |-------- | |1|张三|A组| |2|李四|A组| |3|王麻子|B组| 查询出来后遍历,按分组赋值 (map[分组]=list)的形式 java的话 类似(queryList 为上面3条数据): ```go Map map = new HashMap(); for (Map obj : queryList) { List valList = (List) map.get(obj.get("group")); if(valList == null) valList = new ArrayLi...阅读全文

为什么遍历 Go map 是无序的?

为什么遍历 Go map 是无序的? 有的小伙伴没留意过 Go map 输出顺序,以为它是稳定的有序的;有的小伙伴知道是无序的,但却不知道为什么?有的却理解错误?今天我们将通过本文,揭开 for range map 的 “神秘” 面纱,看看它内部实现到底是怎么样的,输出顺序到底是怎么样? 前言 func main() { m := make(map[int32]string) m[0] = "EDDYCJY1" m[1] = "EDDYCJY2" m[2] = "EDDYCJY3" m[3] = "EDDYCJY4" m[4] = "EDDYCJY5" for k, v := range m { log.Printf("k: %v, v: %v", k, v) } } 假设运行这段代码,输出...阅读全文

博文 2019-06-13 09:34:31 EDDYCJY

使用纯python单次循环和pandas多次循环哪个会更快?

[纯python和pandas速度比较] [一百万数据做测试, 六个统计量] [或许多计算几个不是放到list里再计算一遍会更快点? 算了, 反正纯python太慢都用pandas了, 不再测试了] [那么多几个统计量呢? 比如20个? 30个? 会有追平的情况么?] [是只有基本类型会这样还是所有的统计都是pandas快?] [尝试使用纯python多次循环, 单次循环与pandas对比, go 单次与多次循环对比] 纯python和pandas速度比较 有个数据分析的任务, 本来打算用pandas做, 后来想的是要遍历一个大列表(十万左右, 4000组)几十遍 使用pandas会不会因为一直在遍历导致速度比较慢 尝试使用纯python做, 争取一次遍历把所有的统计项计算出来 所以先试试看...阅读全文

博文 2019-10-14 17:32:53 aside section ._1OhGeD

Golang学习(2)——errors 包

Golang学习 - errors 包--------------------Go 语言使用 error 类型来返回函数执行过程中遇到的错误,如果返回的 error 值为 nil,则表示未遇到错误,否则 error 会返回一个字符串,用于说明遇到了什么错误。其实 error 只是一个接口,定义如下:type error interface { Error() string}你可以用任何类型去实现它(只要添加一个 Error() 方法即可),也就是说,error 可以是任何类型,这意味着,函数 Error 返回的 string 值实际可以包含任意信息,不一定只是字符串(当然字符串是必须的)。error 也不一定表示一个错误,它可以表示任何信息,比如 io 包中就用 error 类型的 io.E...阅读全文

博文 2017-02-09 18:26:04 1160636144

(一)GoLang小记 —— 数组与数组切片

一、创建方式 主要分为: 1、完整创建; 2、切片创建; //创建数组(声明长度) var array1 = [5]int{1, 2, 3} fmt.Printf("array1--- type:%T \n", array1) rangeIntPrint(array1[:]) //创建数组(不声明长度) var array2 = [...]int{6, 7, 8} fmt.Printf("array2--- type:%T \n", array2) rangeIntPrint(array2[:]) //创建数组切片 var array3 = []int{9, 10, 11, 12} fmt.Printf("array3--- type:%T \n", array3) rangeIntPrin...阅读全文

博文 2016-10-19 11:00:17 水果糖

leetcode刷题记录Array篇(31~Next Permutation)

##31.Next Permutation 题目:Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers. If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order). The replacement must be in-place, do not allocate extra memory. 翻译:实现下一个排列,将数字重新排列成数字的下一...阅读全文

博文 2017-04-24 12:54:19 L千年老妖

GO语言学习笔记2018-09-06

1 向slice添加元素,我们使用append自带函数。从上面的步骤我们可知s2=[5,6],继续对slice进行添加数据超过cap时,系统自身会开辟新的底层数组以便于使用,同时还会清除掉不用的slice。 2 举例:注意在go语言中没有null,他用nil代替这个概念,还有就是在go语言中nil就指的是0,也就是说它的空就是0,除非条件设定,否则没有无法执行的意思哦。 比如说这个例子中一开始的nil 3 make(自带函数)的用法:make函数可以显示数组的内容,长度(lens),以及容量(cap))。 s1,s2,s3的输出结果为: 4 copy slice copy(A,B),以A为模板,拷贝B到A中。 5 delect slice删除中间数据 注意; 这里s2[4:]...中“......阅读全文

博文 2018-09-06 21:34:40 pp_5793

Go-for range

Go中 有关循环,有两种,一种是for i :=0;i < len(x); i++ 的经典模式,另外一种是for k, v := range xxx。在用第二种方式时,有一些坑,这儿简单总结一下,希望对跟我一样有疑惑的朋友 有所帮助~ 1 for range 支持的数据类型 for range 目前支持slice、map、string以及channel。 在每一种的使用过程中编译器都会对其做转换。接着往下看 2 for range 应用与原理 2.1 slice 与 array 为了方便讲解,下文的 默认操作例子 for k, v := range a {} slice 跟 array 的for range 操作,会被编译器转换成经典for循环模式。 编译之后,大体是这样的: ha := a...阅读全文

博文 2019-09-24 20:32:48 aside section ._1OhGeD

golang很容易踩的for range的坑

背景介绍 for range一个很容易踩的坑,记录一下。 现象描述 有问题的代码如下: arr := []int{1, 2, 3} myMap := make(map[int]*int) for i, v := range arr { myMap[i] = &v } for _, v := range myMap { fmt.Println(*v) } 上面这段代码执行结果是: 3 3 3 按理不是应该打印下面这个结果吗: 1 2 3 为什么结果不符合预期呢? 合理解释 上面的问题,就是for range有点坑的地方: 对于代码 for i, v := range arr 实际执行是: 声明变量i,v; 遍历arr,将第一个值1赋值给v,将v的地址myMap[0]; 再将第二个值2赋值给v,...阅读全文

博文 2019-12-19 07:32:43 竹一先生_阳明学子

广度配合匿名爬取(改进)

package mainimport ( "fmt" "io/ioutil" "log" "net/http" "os" "regexp" "strings" "sync" "golang.org/x/net/html")//timervar ( ground sync.WaitGroup str string = "https://docs.hacknode.org/gopl-zh/")func init() { defer func() { if err := recover(); err != nil { log.Fatal("recover error is :", err) } }()}//CreatFile is func to get infomationfunc CreatF...阅读全文

博文 2018-06-28 18:34:42 哆啦在这A梦在哪

leetcode刷题记录Array篇(26&27~Remove Element)

26.Remove Duplicates from Sorted Array 题目:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory. 翻译:给定一个排序好了的数组,删除重复的位置,使每个元素只显示一次并返回新的长度。不要为另一个数组分配额外的空间,您必须使用常量内存来进行此操作。 思路:就是去除数组中重复的数,不过要求...阅读全文

博文 2017-04-24 12:54:00 L千年老妖

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-09-08 07:00:08 u013210620

leetcode刷题记录Array篇(16~3 Sum closest)

题目:Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution. 翻译:给定n个整数的数组S,在S中找到三个整数,使得和最接近一个给定的数目target。 返回三个整数的总和。 你可以假设每个输入都只有一个解决方案。 思路:这题的思路和15题3sum差不多,只是结果变成最接近某个数,而不是等于0,并且只需要返回最小的结果,斌不需...阅读全文

博文 2017-04-21 02:45:44 L千年老妖

go 语言循环遍历 小案例

go 语言遍历的几种用法 package main import "fmt" func main(){ for i:=0;i<20;i++{ fmt.Println("遍历结果:%d",i) } test1() test2() } func test1() { sum:=1 for ; sum < 20; { sum+=sum fmt.Println("测试1==== %d",sum) } } func test2() { sum:=0 for sum<20{ //sum+=sum sum++ fmt.Println("测试2==%d",sum) } } 其它有关go语言链接查看:http://www.sharejs.com/codes/go/4396 $(function () { $('...阅读全文

博文 2016-10-25 16:00:01 qq_26337701

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-23 04:00:01 woquNOKIA

Go语言Select的理解

package main import "time" import "fmt" func main() { // 本例中,我们从两个通道中选择 c1 := make(chan string) c2 := make(chan string) // 为了模拟并行协程的阻塞操作,我们让每个通道在一段时间后再写入一个值 go func() { time.Sleep(time.Second * 1) c1 <- "one" }() go func() { time.Sleep(time.Second * 2) c2 <- "two" }() // 我们使用select来等待这两个通道的值,然后输出 select { case msg1 := <-c1: fmt.Println("received", ...阅读全文

博文 2016-10-11 08:00:03 tree2013

JavaScript条件语句的具体用法

  不管是学习前端开发还是学习后端开发,JavaScript都是必学的重要知识点之一,今天要和大家分享的就是JavaScript中的条件语句相关知识点,一起来看看吧。   通常在写代码时,总是需要为不同的决定来执行不同的动作,你可以在代码中使用条件语句来完成该任务。   在 JavaScript中,我们可使用以下条件语句:   if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if....else 语句 - 使用该语句来选择多个代码块之一来执行 switch 语句 - 使用该语句来选择多个代码块之一来执行   JavaScript...阅读全文

Go语言 for

1:求一个水仙花数 //定义一个水仙花数列 n>99&&n<999 func JudgeNum(n int) int { var g, s, b int g = n % 10 b = n / 100 s = (n - b*100 - g) / 10 if g*g*g+b*b*b+s*s*s == n { fmt.Println(n) } return 0 } 2:求一个斐波那契数列的总和 //求斐波那契数列的值 func Fb(n int) int64 { if n <= 1 { return 1 } else { return Fb(n-2) + Fb(n-1) } } 3:全排 /// 全排 参1:数据源(使用数组切片作为参数) 如果指定元素数,那么就是使用数组做参数了 参2:元素开始的...阅读全文

博文 2015-06-17 23:03:19 zhifeiya

go chat room

ws 项目 项目概览 main 函数 func main() { flag.Parse() hub := newHub() go hub.run() http.HandleFunc("/", serveHome) http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { serveWs(hub, w, r) }) err := http.ListenAndServe(*addr, nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } 分析: newHub() 返回一个 Hub结构.包含3个 channel,1个 map。这个map很特殊,当key...阅读全文

博文 2017-05-31 14:03:30 中柠檬

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]) }运行结果:str[0]=Hstr[1]=estr[2]=lstr...阅读全文

博文 2019-08-23 10:32:56 灰侠_bf44

golang 实现查看遍历zk节点

package main import ( "fmt" "github.com/samuel/go-zookeeper/zk" "time" ) func ZkStateString(s *zk.Stat) string { return fmt.Sprintf("Czxid:%d, Mzxid: %d, Ctime: %d, Mtime: %d, Version: %d, Cversion: %d, Aversion: %d, EphemeralOwner: %d, DataLength: %d, NumChildren: %d, Pzxid: %d", func ZKOperateTest() { fmt.Printf("ZKOperateTest\n") var hosts = []s...阅读全文

博文 2020-04-21 17:35:14 dwade06

golang用栈的方式从一段字符串中匹配出{}

一段字符串中匹配出{},感觉还是没有达到效果,仅仅是找出了括号,但是没有展示出那两个两两匹配 ```go package main import ( "fmt" "log" ) //从一段字符串中匹配出{} type Stack struct { size int64 //栈的容量 top int64 //栈顶 data []interface{} } func MakeStack( size int64) Stack{ s :=Stack{} s.size=size s.data =make([]interface{},size) return s } //入栈,空间不足,逐段升高 func (s *Stack) Push(e interface{}) bool{ if s.IsFull(...阅读全文

博文 2018-01-24 20:44:16 yinshidaoshi

Golang实现二叉搜索树

现在只实现了很简单的增加、查找、遍历。后面有空会完善。 package main import "fmt" type BNode struct { data int left *BNode right *BNode } type Tree struct { FirstNode *BNode } func (t *Tree) PrintData (node *BNode) { if node.left != nil { t.PrintData(node.left) } fmt.Println(node.data) if node.right != nil { t.PrintData(node.right) } return } // 返回node func (t *Tree) Search(d...阅读全文

博文 2018-04-21 12:33:04 丶老邪

Learn Golang List

Learn Golang List 简介 list标准包contain中的双向链表 常见操作 初始化 插入 删除 例子 package main import "fmt" import "container/list" func main() { fmt.Println("init list") l := list.New() //插入 l.PushBack("tail") fmt.Println(l) //头部添加 l.PushFront("head") fmt.Println(l) // 遍历 for i := l.Front(); i != nil; i = i.Next() { fmt.Println(i.Value) } } 如何查看帮助 终端运行godoc -http=:8080...阅读全文

博文 2019-02-13 04:34:43 笑吧小鸟

golang中archive/zip包

一、ZIP的操作 压缩、解压 二、GO中压缩操作 1、创建zip文件 2、向这个zip文件里写入要压缩的文件的头部信息和文件信息 package main import ( "os" "log" "archive/zip" "io" "fmt" ) func main() { err := Zip("demo.zip", []string{}) if err != nil { fmt.Println(err) } } func Zip(zipFile string, fileList []string) error { // 创建 zip 包文件 fw, err := os.Create(zipFile) if err != nil { log.Fatal() } defer fw.Clos...阅读全文

博文 2018-12-02 10:34:40 laijh

两数之和

两数之和 描述 题目来源,https://leetcode-cn.com/problems/two-sum 给定一个整数数组 nums 和一个目标值 target,在数组中找出和为目标值的那两个整数,返回他们的数组下标。 假设每种输入只会对应一个答案。但同一个元素不能使用两次。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] Go 语言实现 双重遍历 思路双重遍历确认两个数之和为 target 即可。注意第二个数从第一个数的后面元素遍历即可。 func TwoSum1(nums []int, target int) []int { // # 双重遍历 //O(n^2),...阅读全文

博文 2019-11-04 10:33:55 aside section._1OhGeD

leetcode_447

Golang: 前言:在我看来,这还真不算是道简单题,想想虽然是可以想明白的,但实现起来还是有点复杂的。但是这超过百分之五十的通过率是什么,难道这题只是单方面对我不友好吗? 思路:以i点为起点,找到所有到达i点距离一样的点,然后用数学方法得出排列方式,加入到sum中。 实现:使用一个二维数组记录所有点到点之间的距离,然后从第一个点开始一个for循环,每次循环过程中将这个点到其他所有点的距离值存进一个map中,这样我们就能得到一个以i点到其他点距离为key的map,value是距离i点为key的所有点的数目。然后遍历这个map,凡是value大于2的,即至少有两个点到i点距离一样的,都用数学方法得到排列的数目,然后更新sum,这一套流程完成后,再继续下一个点 代码如下: func number...阅读全文

博文 2020-01-30 21:32:46 淳属虚构

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,...阅读全文

博文 2016-01-16 05:00:01 u013923131

Go-条件&循环&函数

内容 以素数遍历为例,涉及:条件判断、函数、for循环 代码 package main import "fmt" // Printf() import "math" // Sqrt() func isPrime(n int) bool { if n <= 1 { return false } var i int; var max int max = int(math.Sqrt(float64(n))) for i=2; i <= max; i++ { if n % i == 0 {return false} } return true } func main() { const MAX_VALUE = 100 for i:=2; i阅读全文

博文 2016-08-29 12:00:04 u013344915

golang post get 用法

package main import ( "fmt" "io/ioutil" "net/http" "os" "strings" ) func GET() { client := &http.Client{} reqest, err := http.NewRequest("GET", "http://www.baidu.com/", nil) //建立一个请求 if err != nil { fmt.Println("Fatal error ", err.Error()) os.Exit(0) } //Add 头协议 reqest.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;...阅读全文

博文 2020-03-20 13:32:50 hw_owen