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

go 正则的使用

定义一个正则表达式 调用regexp 下面的几个方法并传入一个正则的字符串形式的参数定义一个正则表达式例如 :regexp.MustCompile("\d") Compile CompilePOSIX MustCompile MustCompilePOSIX 方法概述 regexp包中有16种方法来匹配正则表达式并标识匹配的文本,他们的名称可以使用这个正则来匹配 Find(All)?(String)?(Submatch)?(Index)? 如果存在 All 该函数将匹配整个表达式的连续非重叠匹配。方法返回的是一个包含非all 值得切片,这个方法使用一个额外的参数整数参数 n, 如果n> = 0,则该函数最多返回n个匹配项/子匹配项;否则,它返回所有匹配项/子匹配项。 如果存在 String ...阅读全文

博文 2019-10-27 21:02:39 曹飞龙

为什么这段代码运行后进程会死掉?

package main import "fmt" const ( WHITE = iota BLACK BLUE RED YELLOW ) type Color byte func (c Color) String() string { fmt.Println(c) return "Ok" } func main() { var c Color c = WHITE c.String() } 上面的代码运行会死掉. 如果把method的String改成其它名字,例如Stringt则可以正常执行,或者去掉返回值,或者返回值类型改为其他类型就可以正常执行. 求指教...阅读全文

Go语言与面向对象编程

学习Go语言差不多快两个月了,感觉这个过程还是蛮快乐的,翻翻英文资料,写写小程序,总是觉得有好多东西都搞不明白,一步步走下来,却发现,这些迷惑好像也是不可或缺的。慢慢思考,最终也找到了解决方法,可能不是最好的,但是我会随着认识的不断深入,继续修改。 因为java的东西在我的知识体系中是根深蒂固的,尽管我现在很讨厌java体系中的一些东西。对于曾经搞过java的人来说,去学习任何一门新的语言,首先会问,是否是面向对象的语言。刚接触GO的几天,曾经带我的师傅问我go是不是一门面向对象的语言,我闪烁其词,因为我还没有搞清楚到底是不是。面向对象思想是一种很好得方法(到目前来说我认为还是这样)。Go严格来说不是一门面向对象的语言,但是,其中的很多方式还是借鉴了面向对象的一些思想,尽管Go更接近C,但是...阅读全文

博文 2014-10-10 15:00:00 lxy15329

对 Go 语言的综合评价

以前写过一些对 Go 语言的负面评价。现在看来,虽然那些评价大部分属实,然而却由于言辞激烈,没有点明具体问题,难以让某些人信服。在经过几个月实际使用 Go 来构造网站之后,我觉得现在是时候对它作一些更加“客观”的评价了。 定位和优点 Go 比起 C 和 C++ 确实有它的优点,这是很显然的事情。它比起 Java 也有少数优点,然而相对而言更多是不足之处。所以我对 Go 的偏好在比 Java 稍低一点的位置。 Go 语言比起 C,C++ 的强项,当然是它的简单性和垃圾回收。由于 C 和 C++ 的设计有很多历史遗留问题,所以 Go 看起来确实更加优雅和简单。比起那些大量使用设计模式的 Java 代码,Go 语言的代码也似乎更简单一些。另外,Go 的垃圾回收机制比起 C 和 C++ 的全手动内存...阅读全文

博文 2016-02-01 04:00:00 cytzrs

函数作为变量,类型---golang

在go中函数也是一种变量,我们通过type定义这种变量的类型。拥有相同参数和相同返回值的函数属于同一种类型。 通过将函数作为一种类型的变量,我们可以将这种类型的函数作为值传递。 下面是一个简单的例子。 type functinTyoe func(int) bool // 声明了一个函数类型 func isOdd(integer int) bool { if integer%2 == 0 { return false } return true } func isEven(integer int) bool { if integer%2 == 0 { return true } return false } // 声明的函数类型在这个地方当做了一个参数 func filter(slice []...阅读全文

博文 2014-10-04 19:26:58 梁援-晋

用GO实现的erlang的genfsm.

关于erlang的有限状态机,参考erlang四大behaviour之二-gen_fsm这篇文章。 有限状态机可以用下面这个公式来表达 State(S) x Event(E) -> Actions(A), State(S') 这两天正好空闲,就用golang实现了一下,话不多说,直接上代码 package util import ( "errors" "reflect" "sync" "time" "unicode" "unicode/utf8" "util/log" ) var typeOfError = reflect.TypeOf((*error)(nil)).Elem() type FSM struct { sync.Mutex StopReason string rcvr refl...阅读全文

博文 2015-01-13 12:09:56 sll1983

Go 语言简介(上)— 语法

Hello World 文件名 hello.go 1 2 3 4 5 6 7 package main //声明本文件的package名 import "fmt" //import语言的fmt库——用于输出 func main() { fmt.Println("hello world") } 运行 你可以有两种运行方式, 解释执行(实际是编译成a.out再执行) 1 2 $go run hello.go hello world 编译执行 1 2 3 4 5 6 7 $go build hello.go $ls hello hello.go $./hello hello world 自己的package 你可以使用GOPATH环境变量,或是使用相对路径来import你自己的package。 G...阅读全文

博文 2014-12-17 18:00:01 x_focus

golang 函数调用

1. 调用惯例 在计算机科学中,调用惯例其实就是指在实现层面上,一个函数(子程序)如何接受主程序传递的参数并如何将返回值传递回主程序。不同语言对于传递参数和返回值的实现上会有一些差异,不过无论是在 C、Go 语言这种比较接近系统的编程语言,还是 Ruby、Python 这类语言,它们在函数调用上往往都具有相同的形式,也就是一般包含函数名、参数列表两个部分: somefunction(arg0, arg1) 虽然它们的调用形式看起来差不多,但是在这里我们需要考虑 C 和 Go 这两门语言究竟是如何实现调用惯例的,这对于我们理解的 Go 语言的函数调用原理会有非常大的帮助。 1.1. C 语言 如果想要了解 C 语言中的函数调用的原理,我们可以通过 gcc 或者 clang 将 C 语言的代码编...阅读全文

博文 2019-08-21 16:02:58 云南厨子

Go 中的反射要点

简介 反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力。不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型。 类型以及接口 这个基本概念需要清晰,这里不详细展开。 基本类型就是一个值,接口类型是(值,类型)对。 看下面两个图: 当然还有一些内存优化的东西,这里也不展开。 接口对象到反射对象 反射只是从接口变量里面读取类型和值对。类型和值就是我们要的反射对象。package main import ( "fmt" "reflect") func main() { var x float64 = 3.4 fmt.Println("type:", reflect.TypeOf(x))}类型// TypeOf returns the reflection Type...阅读全文

博文 2015-09-26 03:00:01 bnbqian

go学习笔记-控制流

控制语句 条件语句 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句,花括号{}都是必须存在的; 左花括号{必须与if或者else处于同一行; 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔; 在有返回值的函数中,不允许将“最终的”return语句包含在if…else…结构中,否则会编译失败: func example(x int) int{ var result int if x == 0 { result = 5 } else { result = x } return result } 选择语句 switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough c...阅读全文

博文 2014-10-04 19:26:15 Bluven

golang标准库学习——buffio包

import "bufio" bufio包实现了有缓冲的I/O。它包装一个io.Reader或io.Writer接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本I/O的帮助函数的对象。 一、常量 const ( // 用于缓冲一个token,实际需要的最大token尺寸可能小一些,例如缓冲中需要保存一整行内容 MaxScanTokenSize = 64 * 1024 ) 二、变量 var ( ErrInvalidUnreadByte = errors.New("bufio: invalid use of UnreadByte") ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune") ErrB...阅读全文

博文 2016-01-30 10:00:01 weiyuefei

Go 面向对象概念

前言: 本文是学习<> -- 清华大学出版社(王鹏 编著) 的2014年1月第一版 做的一些笔记 , 如有侵权, 请告知笔者, 将在24小时内删除, 转载请注明出处! 1. 对象 - 任意简单的内置数据类型 - 任意复杂的结构体 - 表示具体的事物 / 抽象的规则 / 计划 / 事件 等. 2. 对象的状态 - 用数值来描述, 如长方体的长和宽等. 3. 对象的操作 - 用于改变对象的状态, 操作就是对象的行为. - GO语言中称为Method(方法), Method 就是在 函数(function) 前面增加了一个接收者(Receiver)对象. 将操作和对象关联起来了. - 定义: func (recv receiver_type) methodName(args)(...阅读全文

博文 2015-09-30 03:00:01 roger9567

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

defer的坑与return的理解

defer会经常用到,但是这个坑对于我并不会踩到,因为我通常不会用到命名返回参数,一则没有多少必要,二则增加了代码阅读难度。不过,这个坑能让人很好地理解return这个关键字,所以在此记录下。 func test() (res int) { res = 1 defer func() { res++ }() return 0 } 默默在心里运行这个程序,第一个返回值应该是0嘛,其实不然,return并不是个原子操作。分为了,赋值和返回两个操作,其实是等价于,而defer是在赋值操作后执行的,所以这个函数等价于: func test() (res int) { res = 1 res = 0 //赋值 func() { res++ /...阅读全文

博文 2018-08-13 12:35:04 Cedrus

Golang defer 使用时的坑

defer是golang语言中的关键字,用于资源的释放,会在函数返回之前进行调用。一般采用如下模式: f,err := os.Open(filename) if err != nil { panic(err) } defer f.Close() 如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。 不过如果对defer的了解不够深入,使用起来可能会踩到一些坑,尤其是跟带命名的返回参数一起使用时。在讲解defer的实现之前先看一看使用defer容易遇到的问题。 先来看看几个例子。例1: func f() (result int) { defer func() { result++ }() return 0 } 例2: func f() (r int) { t :=...阅读全文

博文 2016-07-19 06:00:00 shenlanzifa

GO语言入门

谷歌系统所使用的编程语言Go,近年来发展的越来越成熟、方便易用。现在,我们可以通过使用LiteIDE让Go语言编程变得更加简单。(注:按本文标题和结尾来看,本文应该只是一个系列中的第一部分。本部分着重介绍语言基础,所以跟大标题可能有些出入。) 第一步 语言基础 数据、类型、函数、控制 Go语言是一个很容易上手同时功能无比强大的编程语言。你可以将它看做是C的现代版,至于更多的东西,还有待你自己去发掘。Go语言有着清晰简明的静态语法结构,但它表现出来的确是一种动态的效果。它还可以编译成本地代码,但却像解释性语言那样去工作。 总的来说,Go语言是一门完全值得你去尝试的语言,同时本文将告诉你一切你上手这门语言所需要知识。在第二部分,我们将重点分析Go语言是如何处理对象和并发的。 ! 正在加载... ...阅读全文

博文 2014-12-10 19:00:01 x_focus

defer的执行顺序与时机

我们知道defer会在函数结束时执行,那么首先思考两个问题: 如果有多个defer,执行顺序是怎样的? defer是在return之前还是之后执行的?如果defer执行的内容对返回值进行了修改,return结果是否会改变? 多个defer的执行顺序 通过下面这个个例子,我们看下defer的执行顺序: package main import ( "fmt" ) func main() { defer fmt.Println("main defer1") test() defer fmt.Println("main defer2") } func test() () { defer func() { fmt.Println("test defer1") }() defer func() { fm...阅读全文

博文 2019-08-21 00:02:40 moonbamboo

go 函数使用

载:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/02.3.md 函数 函数是Go里面的核心设计,它通过关键字func来声明,它的格式如下: func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) { //这里是处理逻辑代码 //返回多个值 return value1, value2 } 上面的代码我们看出 关键字func用来声明一个函数funcName函数可以有一个或者多个参数,每个参数后面带有类型,通过,分隔函数可以返回多个值上面返回值声明了两个变量output1和output2,如果你不想声明...阅读全文

博文 2015-02-05 17:00:01 yugongpeng_blog

Go语言之匿名函数和C++的lambda表达式

微信公众号 原文链接:https://mp.weixin.qq.com/s/f0St4CioNc8QZHK4jop-3g #一、Go语言中的匿名函数 指的是不需要有名字的函数,通常定义在另外一个函数内部。 ###格式: func (参数列别)(返回值列表) { } 例子: ``` package main import ( "fmt" ) func main() { Sum := func(l, r int) (sum int) { sum = l + r return } // 备注:变量Sum作为匿名函数来使用,求和 fmt.Println("Hello, sum Address: sum!", &Sum, Sum(50,10)) return } Output: Hello, sum ...阅读全文

博文 2019-08-22 19:34:01 ZhDavis

golang学习笔记-func函数

函数function - Go函数不支持 嵌套、重载和默认参数 - 但支持以下特性: 无需声明原形、不定长变参、多返回值、命令返回值参数、匿名函数、闭包 - 定义函数使用关键字func,且大括号不能另起一行(所有有大括号的均遵循此原则) - 函数也可以作为一种类型的使用,直接赋值给变量(匿名函数) 定义一个函数 格式:func name( 传入的变量1 类型,变量2 类型 ) [ 返回变量 类型,变量 类型 ]{ } - 传入的变量可以没有,也可以使多个 - 当传入的变量类型相同时,可以全部省略只留最后一个 func a(a,b,c int) {} - 返回值可以有多个,返回值类型相同,也可以只留最后一个,其中返回变量名称可以省略,省略的话,就需要每返回一个写一个变量的类型了,如果指定了返回...阅读全文

博文 2017-02-09 18:24:33 beyondlee2011

Android开发中 React Native生命周期如何划分?

熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期。今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android中,React Native组件的生命周期,大致分为三个阶段,分别是: 1、组件第一次绘制阶段,这个阶段主要是组件的加载和初始化; 2、组件在运行和交互阶段,这个阶段组件可以处理用户交互,或者接收事件更新界面; 3、组件卸载消亡的阶段,这个阶段主要是组件的清理工作。 在Android React Native组件的整个生命周期中,还有10个回调函数,不得不知。 1、object getDefaultProps()在组件类创建的时候调用一次,然后返回值被缓存下来。...阅读全文

Golang 函数变量

在go中函数也是一种变量,可以通过type定义这种变量的类型。拥有相同参数和相同返回值的函数属于同一种类型。 其优点是,既然是一种变量,我们就可以将函数作为值进行传递。 下面的例子中可以看到,函数isOdd和isEven作为参数传递给函数filter,使得filter函数更灵活。 type functionType func(int) bool // 声明了一个函数类型 func isOdd(integer int) bool { if integer % 2 == 0 { return false } return true } func isEven(integer int) bool { if integer % 2 == 0 { return true } return false ...阅读全文

博文 2019-02-27 15:34:44 vivid___

为物联网而生:高性能时间序列数据库HiTSDB商业化首发!

摘要: 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。 先跟大家聊一下什么叫时序数据。简单的说,就是时间上分布的一系列数值,关键字是数值,我们一般认为的时序数据是什么时间发生了什么事情,但是在时序数据这个领域里定义的时序数据全都是跟数值有关的。也就是说,如果只是一个带有时间戳的一条数据并不能叫做时序数据。举个例子,比如像我早上8点半上楼吃了个饭这条记录,相当于一个日志,这个本身不构成一个时序数据,但是如果某个餐厅早上8点...阅读全文

Go语言圣经 1.3-赋值及类型声明篇

赋值(Assignment) 变量的值可以通过赋值操作符 = 来更新, v = 10。x = 1 // 具名变量x *p = true // 指针变量 person.name = "bob" // 结构体struct的字段 count[x] = count[x] * scale // 数组、切片或者map的某个元素 算数操作符和位操作符都有对应的一元操作符形式, v = v + x 等价于 v += x,例如:count[x] *= scale 这样的缩略形式能省去不少重复的工作,同时数字变量还能通过++递增或者--递减:v := 1 v++ // same as v = v + 1; v becomes 2 v-- // same as v = v - 1; v becomes 1 aga...阅读全文

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

【Go语言】【10】GO语言的map

GO语言中的复合类型除了数组、切片之外,还有一个map;说起map估计大家都不陌生,因为在Java、C++等语言中有它的身影,它以的形式为程序员提供服务。从图中也可以看出:内存中存储了六个城市信息,其中key是城市电话区号,value是城市名称。对于城市电话区号(key)是唯一的,这样方便程序员对城市名称(value)进行增、删、改、查等操作;另外之间也存在一定的关联,即图中的箭头,但这种关联关系对GO语言的初学者来说并不需要特别关心。一、map声明、初始化和赋值1、声明格式:var 变量名 map[key值类型]value值类型例如:var cityMap map[string]stringvar employeeMap map[int]stri...阅读全文

博文 2017-02-09 15:59:22 qingkechina

面向对象 go语言

学习Go语言差不多快两个月了,感觉这个过程还是蛮快乐的,翻翻英文资料,写写小程序,总是觉得有好多东西都搞不明白,一步步走下来,却发现,这些迷惑好像也是不可或缺的。慢慢思考,最终也找到了解决方法,可能不是最好的,但是我会随着认识的不断深入,继续修改。 因为java的东西在我的知识体系中是根深蒂固的,尽管我现在很讨厌java体系中的一些东西。对于曾经搞过java的人来说,去学习任何一门新的语言,首先会问,是否是面向对象的语言。刚接触GO的几天,曾经带我的师傅问我go是不是一门面向对象的语言,我闪烁其词,因为我还没有搞清楚到底是不是。面向对象思想是一种很好得方法(到目前来说我认为还是这样)。Go严格来说不是一门面向对象的语言,但是,其中的很多方式还是借鉴了面向对象的一些思想,尽管Go更接近C,但是...阅读全文

博文 2014-10-04 19:26:19 abaojin

Go的error返回值相关的坑

http://play.golang.org/p/GSn5_I2Qqs package main import "log" type MyError struct{} func (err *MyError) Error() string { return "MyError" } func Foo() (err *MyError) { return } func main() { var err error if err = Foo(); err != nil { log.Fatal(err) // BUG } } 原因请看这个文章: http://my.oschina.net/chai2010/blog/117923 临时建议: 如果是返回自己的Error类型, 绝对不要让这个类型符合err...阅读全文

博文 2015-06-16 08:51:45 chai2010

Go 中for range的一个坑

for range是值拷贝出来的副本 在使用for range的时候,要注意的是,不管是slice还是map,循环的值都是被range值拷贝出来的副本值。 举个简单的例了 package main import "fmt" type Test struct { Index int Num int } func main() { var t []Test t = append(t,Test{Index:1,Num:1}) t = append(t,Test{Index:2,Num:2}) for _, v := range t { v.Num += 100 } for _,v:= range t{ fmt.Println(v.Index,v.Num) } } 得到的结果是 1 1 2 2 因为...阅读全文

Go 实现Linq的探索-1

初步想法,我希望有一个大概的设计,Linq是什么,这部分先不考究。 type User struct{ Id int Name string Birthday time.Time } From(userArr).Where(func(c interface{}) bool{ return c.Birthday > FormatBirthday("1989-01-17") }).Select(func(c interface{}) interface{} { return c.Name }) 假设From,Where,Select返回都是Queryable 一个struct;为了实现类似泛型的效果,Queryable 里面的值是interface{}; type Queryable struc...阅读全文

博文 2017-02-11 09:00:18 yuweikang

新问题:Go语言怎么初始化结构体类型数组中的指针类型呢?(原问题:Go语言怎么在结构体中定义一个指向函数的指针呢?)

type DataNode struct{ cmd *string desc *string handler func() int next *DataNode } var head = []DataNode{ {cmd:"help", desc:"cmd tips", handler:help, next:&head[1]}, {cmd:"add", desc:"addition of two numbers", handler:add, next:nil}} func main(){ //head[0].next = &head[1] //head[1].next = &head[2] //head[2].n...阅读全文

Go学习笔记:基础一

文地址:leitwolf.github.io 撰于 2015-02-14 最近在学习Go语言,按照学习指南学的,现把学习过程记录一下。 这一章学习包、变量和函数。 包 包定义都是在第一行,如: package main 导入别的包则用import,如: import "fmt" import "math" 也可以这样: import ( "fmt" "math/rand" ) 如果你引入了一个包,但没有使用它,是没法编译通过的,出错信息如下: imported and not used: "math" 因为Go语言是静态编译,引入没有使用的包会增大最终执行文件的体积,所以Go强制这样做。 Go语言提供了很多的标准包,具体可以看看Go库文档(中文)。 Go语言编译运行时(go run xxx....阅读全文

博文 2015-02-14 14:00:01 lonewolf

go是函数式编程语言吗?

[2012-05-19 翻译自这里, 对原文有所扩展, 也有所删减. 版权属于原作者, 转载必须保留此声明.] go是函数式编程语言吗? 不是, 当然不是. 那么, go提供函数吗? 是的, 当然, 大多数编程语言都提供函数, go也不例外. func SayHello() { fmt.Println("Hello") } go使用关键字func定义函数, 并在函数体中编写函数逻辑. go函数可以接受参数吗? 额, 这个问题... 哦, 我懂了, 也许是我的SayHello函数给大家造成了错觉, 我会改造我的代码: func SayHelloToSomeone(name string) { fmt.Println("Hello " + name + ".") } 函数SayHelloToSo...阅读全文

博文 2014-10-04 19:26:38 coolxing

go - 函数

函数 1. 格式 func funcName(形参1 type[, 形参2 type...]) [([[返回变量1] type[, [返回变量2] type...]])] { [return [返回变量1[, 返回变量2...]]] } a. 如果形参类型都一样,可以这样写: 形参1, 形参2 type, 同时返回变量也一样 b. 如果只有一个返回值或者无返回值, 可以去掉对应的() c. 如果返回有返回值,该函数中最外层要有return语句 d. 返回语句(), 返回变量名可以省略 e. []表示可省略 f. 不支持默认参数 example code list import "fmt" func main() { //1. 函数的调用,多个返回值 var ( a = 10 b = 100 ...阅读全文

博文 2015-06-17 23:08:17 chuangrain

初识golang之函数

声明: func funcName(input1 type1, intput2 type2) (output1 type1, output2 type2) { ……………… //可以有多个返回值 return val1, val2 } 说明:golang中通过func来声明一个函数,函数可以有一个或者多个参数,每个参数后面带类型,通过,分隔;函数可以返回多个值,返回的个数要于声明时定义的返回个数相同,声明时可以不写返回的变量名,而直接使用类型(如果只有一个返回值且不声明返回值变量,那么可以省略返回值的括号,如果没有返回值,那么就直接省略最后的返回信息定义) 例: func SumAndProduct(a, b int) (int, int) { return a+b, a*b } func ...阅读全文

leetcode记录贴(go语言)

没事的时候打算开始玩一玩leetcode,不然天天写代码,却对算法没啥认识还是有点尴尬的。虽说是做题,其实大部分就是为了看看别人牛逼的思路。尽量每天一题把~ 1.两数之和 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 第一种方法就是便利数组,随着数组长度增加,执行时间指数型增加。 #时间复杂度:O(n^2) #空间复杂度:O(1) func twoSum(nums []int, target int) []int { for firstIndex...阅读全文

博文 2018-09-13 10:35:16 li690347460

Go语言4-数组、切片及map

1、数组 数组长度定义后不可修改,通过内置函数len()来获取数组元素个数 1)类型 //长度为32的byte数组,每个元素为一个字节 [32]byte //长度为2*N的复杂类型数组 [2*N] struct{x,y int32} //长度100的指针数组 [100]*float64 //二维数组,等同于[2]([3]int) [2][3]int //三维数组 [2][2][2]float64 2)定义 //定义一个长度为5的数组,默认会使用int类型的零值(0)进行初始化 arr := [5]int{} //与上面一句作用一样 var arr [5]int = [5]int{} //定义一个长度为5的数组,其中arr[0]将被初始化为1,其余依旧是0 arr := [5]int{1} /...阅读全文

博文 2015-07-26 18:00:00 zjl103

golang 函数和闭包

接触golang有些时间了,以前磕磕碰碰的勉强写过几个小程序,最近工作又亲近golang,就想着再回头巩固一下,曾经遇到过几次的问题又再次遇到了,golang的函数定义格式是这样的: func function_name( [parameter list] ) [return_types] { 函数体 } 函数体之上的哪一行总共分为三个部分,依次是声明关键字,函数名和参数,返回值。函数名和参数是一个整体所以归为一组方便识别的,有时会遇到一些异类的形式,今天就遇到这样的: func fib() func() int { a, b := 0, 1 return func() int { a, b = b, a+b return a } } 比常见的多了一段,让人有点蒙圈了,再回顾到闭包的知识点才...阅读全文

博文 2019-07-11 19:32:39 奚落大神

GO程序设计1——快速入门

1.GO语言开发环境搭建 1.1编译环境安装 点击链接http://code.google.com/p/go/downloads/list 选择一个版本,本人下载的是go1.0.3.windows-386.msi 双击安装,选择安装一个安装主目录:例如,C:\Go,不需要配置什么东西。 1.2集成开发环境IDE安装配置 打开链接:http://code.google.com/p/golangide/downloads/list 下载一个版本:如liteidex17.windows.7z 下载完毕后在某个目录下解压即可 点击liteide.exe,打开开发界面。 配置环境变量 菜单:查看→选项,选择LiteEnv,配置环境变量,有三个文件,system.env,win32.env,win32-...阅读全文

博文 2014-10-18 16:00:06 liangzhao_jay

Golang中的interface代码和允许效果

先说说接口,接口我理解为一些行为的集合。先来看看代码和允许效果。 package main import "fmt" type TypeCalculator interface { TypeCal() string } type Worker struct { Type int Name string } type Student struct { Name string } func (w Worker) TypeCal() string { if w.Type == 0 { return w.Name +"是蓝翔毕业的员工" } else { return w.Name+"不是蓝翔毕业的员工" } } func (s Student) TypeCal() string { return ...阅读全文

博文 2018-12-11 17:34:47 Chole121

golang中的defer panic使用方法

大家都知道golang里的panic相当于其他语言里的throw,而recover相当于其他语言里的cacth,可是由于golang的recover机制要求必须在defer的函数里才能执行catchpanic 大概意思如下 func protect(g func()) { defer func() { log.Println("done") //Println executes normally even if there is a panic if x := recover(); x != nil { log.Printf("run timepanic: %v", x) } }() log.Println("start") g() } 这似乎跟try catch没啥区别,但是如果我们想实现...阅读全文

博文 2016-04-17 00:00:02 vipally

golang flag

定义 flag 参数 方法一: 通过 flag.Xxx() 方法返回一个相应的指针,举几个栗子: wordPtr := flag.String("word", "foo", "a string") numbPtr := flag.Int("numb", 42, "an int") boolPtr := flag.Bool("fork", false, "a bool") 使用形式为 flag.Type(name, defValue, usage) 方法二: 通过 flag.XxxVar() 方法将 flag 绑定到一个变量,该种方式返回值类型,举个栗子: var svar string flag.StringVar(&svar, "svar", "bar", "a string var") ...阅读全文

博文 2020-01-01 02:32:55 哆啦在这A梦在哪

Golang -- 函数

函数声明 func (p myType ) funcName ( a, b int , c string ) ( r , s int ) { 函数体 return 语句 } func 关键字 (p myType) 表明 函数所属于的类型对象!,即为特定类型定义方法,可以省去不写,即为普通的函数 (这里我们主要讲解 普通的函数) 函数名 参数 (可以不声明) 返回值 (可以不声明) 函数体 函数调用 我们知道C++的类中有 private,public,friend,可以控制类成员可见度。并且通过命名空间来减少命名冲突。Java也是如此。 在Go语言中 和python一样,也是采用 package 来对 不同的模块 进行划分的。 可以直接调用 13 个内置函数(函数全部为小写名称) 调用标准包...阅读全文

博文 2016-03-02 15:00:01 xiaorenwuzyh

golang os.exec包学习

简介:exec包用于执行外部命令。它包装了os.StartProcess函数以便更容易的修正输入和输出,使用管道连接I/O。 func LookPath func LookPath(file string) (string, error) 在环境变量PATH指定的目录中搜索可执行文件,如file中有斜杠,则只在当前目录搜索。返回完整路径或者相对于当前目录的一个相对路径。 func main() { output, err := exec.LookPath("ls") if err != nil { log.Fatal(err) } fmt.Printf(output) } output: [ `go run test.go` | done: 616.254982ms ] /bin/ls ty...阅读全文

博文 2017-08-01 12:06:19 ifcoder

关于golang中use as value错误

今天写代码过程中突然报错了,百思不得其解,错误如下 报错代码 第一次遇到这个错误,于是上网搜了一下也没有找到解决。仔细阅读代码后发现initEs(str)这个方法没有设置返回值,而我在使用initES(str)时写了返回值。initEs(str)方法如下: initEST(str) 总结:每一个操蛋的错误,都有一个极其sb的失误造成的...阅读全文

博文 2019-03-17 18:34:42 贝塔船长

go语言常用函数

append append:在切片末尾添加元素并返回结果。append函数原型:func append(slice []T, elements...T) 。其中T表示任意类型。 示例1: 1 arr1 := []int{1, 2, 3} 2 arr2 := append(arr1, 4, 5, 6) 3 fmt.Println(arr2) // 输出:1,2,3,4,5,6 append不仅能在切片末尾添加普通元素,还能在切片末尾添加切片。 1 arr1 := []int{1, 2, 3} 2 arr2 := []int{4, 5, 6} 3 arr3 := append(arr1, arr2...) // 此处必须要有 ... 否则编译器会报类型错误 4 fmt.Println(arr3)...阅读全文

博文 2015-06-12 03:00:00 hezhixiong

golang语言部分保留字的举例

golang和c的代码有很大不同的,一不小心就会误用。 1 /* go保留字: */ 2 /* 3 break default func interface select 4 case defer go map struct 5 chan else goto package switch 6 const fallthrough if range type 7 continue for import return var 8 9 */ 10 /*1 package Name 包的名字 */ 11 //package go_reserved 12 package main //No1 13 /*2 import "Name" 导入包 14 import ( 15 别名 "fmt" 一旦启用别名,...阅读全文

博文 2015-03-13 03:00:01 neujie

<-chan XXX返回类型是什么意思?应该如何接收并处理?

chan XXX我可以作为chan接收并用xx :=<-XXX方式操作获取到后续的值,但go-zookeeper包中有<-chan XXX作为返回值的,我不理解这种写法是什么含义,不知道如何接收和处理,请大神指教,谢谢。 对应的代码: ``` func Connect(servers []string, sessionTimeout time.Duration, options ...connOption) (*Conn, <-chan Event, error) { if len(servers) == 0 { return nil, nil, errors.New("zk: server list must not be empty") } // 省略。。...阅读全文

关于Golang 交换2个变量值方法的总结

package main import ( "fmt" ) // 使用第三变量交换a,b值 func swap(a *int, b *int) { tem := *a *a = *b *b = tem return } // 使用第三变量交换a,b值:go 直接交换值 func swapTwo(a *int, b *int) { *a, *b = *b, *a } // 不使用第三变量交换a,b值:直接返回 func swapReturn(a int, b int) (int, int) { return b, a } // 不使用第三变量交换a,b值:数学运算 func swapThree(a *int, b *int) { *a = *a + *b *b = *a - *b *a = *...阅读全文

博文 2019-10-20 02:32:46 aside section ._1OhGeD