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

golang中container/list包用法

list是一个双向链表。该结构具有链表的所有功能。 type Element type Element struct { Value interface{} //在元素中存储的值 } func (e *Element) Next() *Element //返回该元素的下一个元素,如果没有下一个元素则返回nil func (e *Element) Prev() *Element//返回该元素的前一个元素,如果没有前一个元素则返回nil。 type List func New() *List //返回一个初始化的list func (l *List) Back() *Element //获取list l的最后一个元素 func (l *List) Front() *Element //获取lis...阅读全文

博文 2015-06-23 02:03:13 chenbaoke

golang time 时间的加减法

time包中的Add和Sub的用法,Add用于计算某个时间之前和之后的时间点,Sub用于计算两个时间差 package main import ( "fmt" "strings" "time" ) func main() { // Add 时间相加 now := time.Now() // ParseDuration parses a duration string. // A duration string is a possibly signed sequence of decimal numbers, // each with optional fraction and a unit suffix, // such as "300ms", "-1.5h" or "2h45m". // ...阅读全文

博文 2016-11-02 10:00:03 CodyGuo

go json解析Marshal和Unmarshal

http://www.tuicool.com/articles/BFruI3 go语言提供一个json解析的包。见 http://golang.org/pkg/encoding/json/ 官方同时提供了一篇文章 JSON and Go 讲述json包的用法, 该文章同时存在中文翻译: JSON与Go 。 看过上述两篇文章后,基本使用应该就没问题了。 同时,贴几个官方的例子,方便理解。 Decoder: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 package main import ( "encoding/json" "fmt" "io" "log" "str...阅读全文

博文 2016-04-14 02:00:01 jiangxiangxuan

GoLang 字符串处理大全

package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.Println(strings.Contains("seafood", "bar")) //false fmt.Println(strings.Contains("seafood", "")) //true fmt.Println(strings.Contains("", "")) //true 这里要特别注意 fm...阅读全文

博文 2015-06-17 20:04:07 gzw13999

Go语言中Path包用法

// path package main import ( "fmt" "os" "path" "path/filepath" ) func main() { //Path操作 fmt.Println("Path操作-----------------") fmt.Println(path.Base("http://www.baidu.com/file/aa.jpg")) //aa.jpg fmt.Println(path.Clean("c:\\file//abc///aa.jpg")) //c:\file/abc/aa.jpg fmt.Println(os.Getwd()) //D:\Projects\GoPath\source\demo\syntax\path fmt.Prin...阅读全文

博文 2016-04-07 05:00:00 songxingzhu

golang语言os.Stat()用法及功能

package main import ( "fmt" "os" ) func main() { fileinfo, err := os.Stat(`C:\Users\Administrator\Desktop\UninstallTool.zip`) if err != nil { panic(err) } fmt.Println(fileinfo.Name()) //获取文件名 fmt.Println(fileinfo.IsDir()) //判断是否是目录,返回bool类型 fmt.Println(fileinfo.ModTime()) //获取文件修改时间 fmt.Println(fileinfo.Mode()) fmt.Println(fileinfo.Size()) //获取文件大小...阅读全文

博文 2014-10-04 19:26:12 igolang

go import用法

import "fmt"最常用的一种形式 import "./test"导入同一目录下test包中的内容 import f "fmt"导入fmt,并给他启别名f import . "fmt",将fmt启用别名".",这样就可以直接使用其内容,而不用再添加fmt,如fmt.Println可以直接写成Println import _ "fmt" 表示不使用该包,而是只是使用该包的init函数,并不显示的使用该包的其他内容。注意:这种形式的import,当import时就执行了fmt包中的init函数,而不能够使用该包的其他函数...阅读全文

博文 2015-11-26 18:00:00 chenbaoke

golang学习的点点滴滴:range使用总结

1、当range作用于string时, 第一个返回值为index,第二次是char str := "hello world" for index, ch := range str { fmt.Printf("%d --- %c\n", index, ch) } 2、当range作用于array时, 第一个返回值为index,第二次是value func PrintArray(array [5]int) { for index, res := range array { fmt.Println(index, "--", res) } } func main() { array := [5]int{1,2,3,4,5} PrintArray(array) } 3、当range作用于slice时,...阅读全文

博文 2014-10-04 19:27:41 亓斌哥哥

Go计算运行的时间

函数time.Since() 计算golang运行的时间是非常有用的性能衡量指标,特别是在并发基准测试中。下面将介绍如何简单地使用Go语言来计算程序运行的时间。 简单地使用Golang的time.Since()函数即可。下面有一个完整例子展示这个用法。 package main import ( "fmt" "time" ) func StartCac() { t1 := time.Now() // get current time //logic handlers for i := 0; i < 1000; i++ { fmt.Print("*") } elapsed := time.Since(t1) fmt.Println("App elapsed: ", elapsed) } fun...阅读全文

博文 2016-05-20 11:00:00 GreatElite

Golang(Go语言)内置函数之copy用法

该函数主要是切片(slice)的拷贝,不支持数组 将第二个slice里的元素拷贝到第一个slice里,拷贝的长度为两个slice中长度较小的长度值 示例: s := []int{1,2,3}fmt.Println(s) //[1 2 3]copy(s,[]int{4,5,6,7,8,9})fmt.Println(s) //[4 5 6] 有一种特殊用法,将字符串当成[]byte类型的slice bytes := []byte("hello world")copy(bytes,"ha ha"...阅读全文

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

Golang日志--Seelog的简单用法

Beego自带的log包虽然功能比较完善,但是在日志中会带上日志级别的时间戳,而且这个时间戳还删除不了。 因为项目需要,所以研究了下Golang中其他的日志包,发现seelog正好能满足俺们项目的需要,因此在这做简单介绍。 seelog的地址:"github.com/cihub/seelog" seelog功能强大,在此简单介绍将日志配置保存在xml文件中,并从文件中获取配置,然后使用的流程。 在controllers包的某个文件中: mainlog, _ = seelog.LoggerFromConfigAsFile("conf/seelog-main.xml")LoggerFromConfigAsFile会从后面的文件中获取日志配置,如上则是从conf包的seelog-main.xml文...阅读全文

博文 2015-06-17 20:03:42 stevefang

go语言:sync.Once的用法

sync.Once.Do(f func())是一个挺有趣的东西,能保证once只执行一次,无论你是否更换once.Do(xx)这里的方法,这个sync.Once块只会执行一次。 package main import ( "fmt" "sync" "time" ) var once sync.Once func main() { for i, v := range make([]string, 10) { once.Do(onces) fmt.Println("count:", v, "---", i) } for i := 0; i < 10; i++ { go func() { once.Do(onced) fmt.Println("213") }() } time.Sleep(4000...阅读全文

博文 2016-01-05 19:00:00 x369201170

golang sql 中的transaction(事务)的用法

事务就是 保证不同的sql 语句同时成功,或者同时失败的方法。基础用法就不说了,我发现很多人在执行事务 commit , rollback的时候 并不判断是否成功或者失败,也不记录日志。这个虽然说有一点点难度,但是还是非常好做的,可能大家都受到官网文档误导了。 官网文档用的时候就不判断错误,不判断错误如果rollback出错了,没日志,定位会很难,数据不一致问题也非常严重,真是误人子弟! ``` package main import ( "database/sql"...阅读全文

golang time的几种用法

首先说明golang 语言设计设有个叫 XXnuts的家伙,果然是个变态,把时间原点设计在了 2006-01-02 15:04:05 其实人家这个日期是有意义的: 2006-01-02T15:04:05Z07:00 每个数字的意义: 1 2 3 4 5 6 7 月 日 时 分 秒 年 时 区 常用的方法: 1 toTime格式化(Parsing): 用法一: 使用毫秒数 1 t := time.Unix(1362984425, 0) 2 nt := t.Format("2006-01-02 15:04:05") 3 fmt.Println(nt) 用法二: 使用固定的字符串进行格式化获得time 对象 1 const TimeFormat = "2006-01-02 15:04:05" 2 ...阅读全文

博文 2015-06-17 20:04:02 LvanNeo

golang time的几种用法

首先说明golang 语言设计设有个叫 XXnuts的家伙,果然是个变态,把时间原点设计在了 2006-01-02 15:04:05 其实人家这个日期是有意义的: 2006-01-02T15:04:05Z07:00 每个数字的意义: 1 2 3 4 5 6 7 月 日 时 分 秒 年 时 区 常用的方法: 1 toTime格式化(Parsing): 用法一: 使用毫秒数 t := time.Unix(1362984425, 0) nt := t.Format("2006-01-02 15:04:05") fmt.Println(nt) 用法二: 使用固定的字符串进行格式化获得time 对象 const TimeFormat = "2006-01-02 15:04:05" func TestX...阅读全文

博文 2014-10-04 19:26:54 磊_子

go语言 看代码,学strings包

package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.Println(strings.Contains("seafood", "bar")) //false fmt.Println(strings.Contains("seafood", "")) //true fmt.Println(strings.Contains("", "")) //true 这里要特别注意 fm...阅读全文

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

golang的指针receiver和非指针receiver的区别?

golang的指针receiver和非指针receiver的区别? 最大的区别应该是指针传递的是对像的引用,这样在方法里操作的时候可以动态修改对像的属性值。 非指针传递的是对像的拷贝。 这个应该和PHP的引用的用法差不多。 package main import ( "fmt" ) type Person struct { Name string Age int } func (p *Person) SayHi1() { p.Name = "leon1" } func (p Person) SayHi2() { p.Name = "leon2" } func main() { p1 := &Person{Name: "test", Age: 10} fmt.Println("name1 : ...阅读全文

博文 2015-06-17 20:05:15 leonpengweicn

go语言,变量引用的用法

package main import "fmt" func main() { //引用变量赋值 var a string afuzhi(&a) fmt.Println(a) fmt.Println("=========================") bianliang() } func afuzhi(b *string) { *b = "ccc" //fmt.Println(b) } func bianliang() { var a = [3]int{1, 2, 3} var b = &a b[1]++ fmt.Println(a, b) } /* 输出结果 ccc ========================= [1 3 3] &[1 3 3] *...阅读全文

博文 2014-10-04 19:26:43 elick

go语言字符串处理

string包: 查找字串是否在指定的字符串中:strings.Contains("seafood", "foo")//true strings.Contains("seafood", "bar")//false 查找字串是在指定的字符串中出现的次数:strings.Count("cheese", "e")//3 package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.P...阅读全文

博文 2015-11-14 03:00:00 xjser

《Go语言核心编程》一书正式上市了

《Go语言核心编程》一书9月底上市了,本文是《Go语言核心编程》的前言部分,推荐给大家,希望这本书能帮助到大家更好的学习Go语言。 ## 书籍概况 Go语言的核心语言特性包括:类型系统、接口、并发。这三部分是Go语言精华、优美、也是重要的特征,本书紧密围绕这三个主题展开。以“类型系统”为例,Go语言中的类型有:简单类型、复合类型、命名类型、未命名类型、静态类型、动态类型、底层类型、接口类型、具体类型以及类型字面量等诸多概念,这些概念在其他Go类图书里面鲜有介绍,本书试图帮助读者梳理清楚这些类型的含义,建立概念,认清类型本质并学会正确使用;在接口章节,不单介绍了接口概念和用法,还深入分析了接口的机制,使读者对Go语言非侵入式的接口有更深入的理解;在并发编程章节,书中给出了5个并发编程范式,并用...阅读全文

golang中自动加分号的情况

分号 正式的语法使用分号“;”作为多个语句的分隔符。Go程序可以使用以下两种规则在大多数情况下省略这些分号: 当输入被断开为标记时,如果行末标记为 一个标识符一个整数、浮点数、虚数、字符或字符串文字关键字break、continue、fallthrough或return中的一个运算符和分隔符++、--、)、]或}中的一个 则分号将被自动插入到标记流中非空白行的末尾。 如果让复合语句占用单独一行,则在“)”或“"}"”后面的分号可以被省略。 为了反映习惯用法,本文档中的示例代码将依据此规则省略分号。 其实偶也没看懂...阅读全文

博文 2015-06-17 20:23:38 icyday

golang异常panic和恢复recover用法

go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理 在一个主进程,多个go程处理逻辑的结构中,这个很重要,如果不用recover捕获panic异常,会导致整个进程出错中断 package main import "fmt" func main() { defer func() { //必须要先声明defer,否则不能捕获到panic异常 fmt.Println("c") if err := recover(); err != nil { fmt.Println(err) //这里的err其实就是panic传入的内容,55 } fmt.Println("d") }() f() } func f() { fmt.Println("a") panic...阅读全文

博文 2015-06-18 08:02:32 ghost911_slb

Go-Type

在谈论struct和interface已经用到了type这个关键字。 另外,Go的type另外一种常用功能,是类似于C/C++的typedef。在Go的package中,这种用法非常常见。 A type declaration defines a new named type that has the same underlying type as an existing type. The named type provides a way to separate different and perhaps incompatible uses of the underlying type so that they can’t be mixed unintentionally. type n...阅读全文

博文 2016-09-07 07:00:01 u013344915

golang x.(type) 用法

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> golang中x.(type)只能在switch中使用 func MyPrintf(args ...interface{}) { for _, arg := range args { switch arg.(type) { case int: fmt.Println(arg, "is an int value.") case string: fmt.Println(arg, "is a string value.") case int64: fmt.Println(arg, "is an int64 value.") default: fmt.Println(arg, "is an unknown type....阅读全文

博文 2018-09-01 14:33:12 Robin3D

Go语言Slice操作.

1、基本用法: a = append(a, b...) 例如:list = appened(list,[]int{1,2,3,4}...) 可以用来合并两个列表. 不用这样了 :list := make([]int,len(list1)+len(list2)) 然后再copy(list,list1) copy(list[len(list1):],list2) 2、Copy: b = make([]T, len(a)) copy(b, a) 或者: b = append([]T(nil), a...) 3、Cut: a = append(a[:i], a[j:]...) 4、Delete: a = append(a[:i], a[i+1:]...) 或者: a = a[:i+copy(a[i:...阅读全文

博文 2015-11-09 11:00:42 fyxichen

golang interface用法

接口是一个或多个方法签名的集合,任何类型的方法集中只要拥有与之对应的全部方法,就表示它"实现"了该接口无须在该类型上显式添加接口声明。 所谓对应方法,是指有相同名称、参数列表 (不包括参数名) 以及返回值。当然,该类型还可以有其他方法。(1)接口命名习惯以er结尾结构体。(2)接口只有方法签名,没有实现。(3)接口没有数据字段。(4)可在接口中嵌入其他接口。(5)类型可实现多个接口。 下面举个栗子:用例:一个人,他的有两种角色,在公司是程序猿,在家里是孩他爸。在公司当程序猿时就写bug,在家当爹时就洗尿布。则其接口和结构体的映射关系为: package main import "fmt" type CodeMonkey interface { codingEveryday() string ...阅读全文

博文 2014-10-04 19:27:27 Estone

(Manual) GoLang之参考文档

2013-12-22 wcdj 又是一年一度的冬至,新的一年又快到来了。今天在学习go时找到一些不错的文档放在这里方便后续学习。 go-wiki(一个非官方的文档,例子很简短方便学习,详细的用法可以在官方连接中进一步查看) This is an unofficial, community-authored reference wiki for the Go Language. The goal is to write small, focused reference/summary articles on individual topics of the language. Example: http://code.google.com/p/go-wiki/wiki/Range The fu...阅读全文

博文 2014-10-09 16:00:03 delphiwcdj

golang 反射结构字段类型

golang 反射用法,做个笔记. package main import ( "fmt" "reflect" ) type roles struct { roleId int roleName string } type User struct { Name string Age int Email string NickName string Telphone int Roles roles } func main() { u := User{Name: "Name", Age: 30, Email: "xxxx@afanty3d.com", NickName: "omni360", Telphone: xxxxx, Roles: roles{roleId: 1001, roleName...阅读全文

博文 2015-11-02 15:00:31 omni360

golang 的 strings 包的 Trim 的用法介绍

函数声明: func Trim(s string, cutset string) string 官方描述: 返回将 s 前后端所有 cutset 包含的 utf-8 码值都去掉的字符串。 示例代码: package main import ( "fmt" "strings" _ "test/subpac" ) func main(){ fmt.Println("[ !!! Achtung! Achtung! !!! ]:[]:[", strings.Trim(" !!! Achtung! Achtung! !!! ", "") ,"\b]") fmt.Println("[ !!! Achtung! Achtung! !!! ]:[ ]:[", strings.Trim(" !!! Achtu...阅读全文

博文 2018-12-28 23:31:33 chuanglan

golang flag 用法示例

file.go package main import "flag" import "fmt" import "os" func main() { if len(os.Args) < 2 { fmt.Println("too less param") return } var ip = flag.Int("flagname", 1234, "help message for flagname") var real string flag.StringVar(&real, "dir", "this is a test","help msg for dir") flag.Parse() fmt.Println(*ip) fmt.Println(real) } go build file.go ....阅读全文

博文 2015-06-18 17:04:31 u011363248

go语言map的复杂用法

// 对于简的map 例如 map[string] string 还是很好掌握的 // 下面这个程序演示复杂的map package main import "fmt" type PersonInfo struct { ID string Name string Address string } func main() { personDB := make(map[string][2]PersonInfo) //初始化,注意对数组的初始化 personDB["test1"] = [2]PersonInfo{{"12345", "Tom", "aaa"}, {"12346", "Xym", "bbb"}} //元素查找,这是通用的使用方法 v, ok := personDB["test1"] ...阅读全文

博文 2015-06-17 23:07:38 zistxym

golang strings包

001 package main 002 003 import ( 004 "fmt" 005 "strings" 006 //"unicode/utf8" 007 ) 008 009 func main() { 010 fmt.Println("查找子串是否在指定的字符串中") 011 fmt.Println(" Contains 函数的用法") 012 fmt.Println(strings.Contains("seafood", "foo")) //true 013 fmt.Println(strings.Contains("seafood", "bar")) //false 014 fmt.Println(strings.Contains("seafood", "")) //true...阅读全文

博文 2015-06-17 20:04:03 zb_liang

Python中类的特殊方法详解

  本文和大家分享的主要是python语言中类的特殊方法相关用法,希望对大家有帮助。   构造序列   1._len_(self)   2._getitem_(self,key)   3._setitem_(self,key,value)   4._delitem_(self,key)   程序演示:   myseq.py   class MySeq:   def __init__(self):   self.lseq = ["I","II","III","IV"]   def __len__(self):   return len(self.lseq)   def __getitem__(self,key): ...阅读全文

奇怪的go语言iota

go语言iota有点奇怪,看下面代码: package main import ( "fmt" ) const ( TestMin = -1 TestA TestB = iota TestC ) func main() { fmt.Printf("TestMin:%d\n", TestMin) fmt.Printf("TestA:%d\n", TestA) fmt.Printf("TestB:%d\n", TestB) fmt.Printf("TestC:%d\n", TestC) } 上面代码的执行结果是什么呢? 结果是这样的,看到结果,对iota的用法就基本掌握了: /* TestMin:-1 TestA:-1 TestB:2 TestC:3 */ 再来看一例: package main...阅读全文

博文 2016-06-19 11:02:34 lanyang123456

如何在switch中对多个type进行匹配

比如, case int, float64 编译会报错,有没有什么方法能实现这种用法呢? ``` package main import "fmt" func do(i interface{}) { switch v := i.(type) { case int, float64: // Illegal! Then how? fmt.Printf("Twice %v is %v\n", v, v*2) case string: fmt.Printf("%q is %v bytes long\n", v, len(v)) default: fmt.Printf("I don't know about type %T!\n", v) } }...阅读全文

GO语言练习:map基本用法

1、代码 2、运行 1、代码 文件:map.go 1 package main 2 import "fmt" 3 4 type PersionInfo struct{ 5 ID string 6 Name string 7 Address string 8 } 9 10 func main(){ 11 var persionDB map[string] PersionInfo 12 persionDB = make(map[string] PersionInfo) 13 14 persionDB["12345"] = PersionInfo{"12345", "Tom", "Room 203, ..."} 15 persionDB["1"] = PersionInfo{"1", "Jack"...阅读全文

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

golang 中 reflect 简单用法

package main import ( "fmt" "reflect" ) type Person struct { Name string Age int } func (p Person) GetName() string { return p.Name } func (p Person) SetName(s string) { p.Name = s } func main() { a := &Person{"Name", 1} t := reflect.TypeOf(*a) //必须取值,否则类型为空 fmt.Println(t.Name()) v := reflect.ValueOf(a).Elem() //a需要是引用 k := v.Type() for i := 0; i <...阅读全文

博文 2016-08-17 15:00:05 su_sai

go结构体的用法总结

1,struct加上指向本类型的指针,可以实现链表等复杂数据结构,,然后实现队列和堆栈等常用数据类型。 2,struct和interface实现了go的继承,通过组合,或者说是嵌套完成继承。 3,一些特殊用法。 首先,空的interface重要用途是可以解析未知json!因为interface能继承任意类型,所以,web的接口中用json,可以直接用map[string] interface{}多重嵌套的方式实现解析未知json。 空的struct,可以用来做method reciver,只有属性,没有方法。比如: type classA struct { } func (s * classA) method1 ()(){ } func (s * classA) method2 ()(){ ...阅读全文

博文 2017-07-06 03:03:31 dmwan

Golang(Go语言)读取文件基本用法

需要用到os和bufio包 import "os"import "bufio" 用os.Open打开一个文件,用bufio.NewReader来读取文件 file, err := os.Open("input.dat")if err!= nil { fmt.Println("failed to open") return}defer file.Close()reader := bufio.NewReader(file)for { str, err := reader.ReadString('\n') //每次读取一行 if err!= nil { break // 读完或发生错误 } fmt.Printf(str)...阅读全文

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

GO语言练习:组合的用法

1、代码 2、运行 1、代码 1 package main 2 3 import "fmt" 4 5 type Base struct { 6 Name string 7 } 8 9 func (base * Base) Foo() { 10 fmt.Println("Base Foo : ", base.Name) 11 } 12 13 func (base * Base) Bar() { 14 fmt.Println("Base Bar : ", base.Name) 15 } 16 17 type Foo struct { 18 Base 19 a int 20 } 21 22 func (foo * Foo) Bar() { 23 foo.Base.Bar() 24 fmt.Prin...阅读全文

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

GO语言练习:switch基本用法

1、代码 2、运行 1、代码 1 package main 2 import "fmt" 3 4 func switch_1(i int){ 5 switch i { 6 case 0 : 7 fmt.Println("0 --: i = ", i); 8 case 1: 9 fmt.Println("1 --: i = ", i); 10 case 2: 11 fmt.Println("2 --: i = ", i); 12 fallthrough 13 case 3: 14 fmt.Println("3 --: i = ", i); 15 case 4, 5, 6: 16 fmt.Println("4, 5, 6 --: i = ", i); 17 default : 18 fmt.Pr...阅读全文

博文 2015-07-03 03:00:00 fengbohello