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

GoLang获取struct的tag

GoLang获取struct的tag内容;beego的ORM中也通过tag来定义参数的。 获取tag的内容是利用反射包来实现的。示例代码能清楚的看懂! 1 package main 2 import ( 3 "fmt" 4 "reflect" // 这里引入reflect模块 5 ) 6 type User struct { 7 Name string "user name" //这引号里面的就是tag 8 Passwd string "user passsword" 9 } 10 func main() { 11 user := &User{"chronos", "pass"} 12 s := reflect.TypeOf(user).Elem() //通过反射获取type定义 13 fo...阅读全文

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

Go实例学:break 和 continue

利用break 可以提前退出循环,break 终止当前的循环;也可以定义标签,break指定的循环体。 break的用法示例1: package main import ( "fmt" ) func main() { for i := 0; i < 10; i++ { if i > 5 { break //终止这个循环,只打印0到5 } fmt.Println(i) } } 输出结果 0 1 2 3 4 5 break的用法示例2: 循环嵌套循环时,可以在break 后指定标签。用标签决定哪个循环被终止 package main import ( "fmt" ) func main() { J: for j := 0; j < 5; j++ { for i := 0; i < 10; i++...阅读全文

博文 2014-12-01 08:00:02 Goopand

Golang 获取系统环境变量

Golang 要获取系统的环境变量需要使用os包中的env 导入”os”包通过os包中的Getenv方法来获取 func Getenv(key string) string { } 示例代码: package main import "fmt" import "os" func main(){ var JAVAHOME string JAVAHOME = os.Getenv("JAVA_HOME") fmt.Println(JAVAHOME) } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering =...阅读全文

博文 2015-06-17 20:03:45 happinessaflower

golang时间处理

golang时间处理 相关包 "time" 当前时间戳 fmt.Println(time.Now().Unix()) # 1389058332 当前格式化时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5 # 2014-01-07 09:42:20 时间戳转str格式化时间 str_time := time.Unix(1389058332, 0).Format("2006-01-02 15:04:05") fmt.Println(str_time) # 2014-01-07 09:32:12 str格式化时间转时间戳 the_time :=...阅读全文

博文 2014-10-04 19:27:10 千山万水

Golang Aes 加密示例

Aes加密的一个示例。供各位参考. package main import ( "crypto/aes" "crypto/cipher" "fmt" ) func main() { aesEnc := AesEncrypt{} arrEncrypt, err := aesEnc.Encrypt("abcde") if err != nil { fmt.Println(arrEncrypt) return } strMsg, err := aesEnc.Decrypt(arrEncrypt) if err != nil { fmt.Println(arrEncrypt) return } fmt.Println(strMsg) } type AesEncrypt struct { } func...阅读全文

博文 2015-05-12 21:00:02 王岩0001

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语言 类型:布尔类型

Go语言中的布尔类型与其他语言基本一致,关键字也为bool,可赋值为预定义的true和false示例代码如下: var v1 bool v1 = true v2 := (1 == 2) // v2也会被推导为bool类型 //from http://www.cnblogs.com/osfipin/ 布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换。以下的示例是一些错误的用法,会导致编译错误: var b bool b = 1 // 编译错误 b = bool(1) // 编译错误 以下的用法才是正确的: var b bool b = (1!=0) // 编译正确 fmt.Println("Result:", b) // 打印结果为Result: true 布尔可以做3种逻辑运算,&...阅读全文

博文 2015-10-09 11:00:11 osfipin

关于golang的多进程的控制与示例程序

我们写C 的时候,假如用到多进程,我们通常都会用信号,管理等来进程进程间的通信, 那么golang是怎么实现这个的呢?? 直接看码说话吧 package main import ( "fmt" "time" ) func main() { timeout := make(chan bool, 1) go func() { fmt.Println("------------ 子进程1--------------") t1 := time.Now().UnixNano() fmt.Println(t1) fmt.Println("这个一定会执行") time.Sleep(3 * time.Second) // timeout <- true timeout <- true }() fmt.Pri...阅读全文

博文 2016-08-19 12:00:03 r00txx

基于 Golang 的 xls 读取类库:xls

Golang 编写的 xls 读取类库,能够实现 xls 表格的读取功能 func (w *WorkBook) ReadAllCells() (res [][]string) { for _, sheet := range w.Sheets { w.PrepareSheet(sheet) if sheet.MaxRow != 0 { temp := make([][]string, sheet.MaxRow+1) for k, row := range sheet.Rows { data := make([]string, 0) if len(row.Cols) > 0 { for _, col := range row.Cols { if uint16(len(data)) <= col....阅读全文

博文 2015-10-24 03:00:00 zhuiluoyu

golang.org/x/crypto/scrypt应该如何使用?

正在看《GO WEB编程》,里面看到了高级的加密方案, http://godoc.org/golang.org/x/crypto/scrypt 想按上面的示例写,结果总是不行,第二个参数salt到底怎么传入啊? str := "123456" dk := scrypt.Key([]byte(str), []byte("12345678"), 16384, 8, 1, 32) fmt.Printf("专家方案(123456) = %x ", dk) 这样子写不可以...阅读全文

golang ftp客户端示例 支持断点续传

package main import ( ftp4go "github.com/shenshouer/ftp4go" "fmt" "os" ) var( downloadFileName = "DockerToolbox-1.8.2a.pkg" BASE_FTP_PATH = "/home/bob/" // base data path in ftp server ) func main() { ftpClient := ftp4go.NewFTP(0) // 1 for debugging //connect _, err := ftpClient.Connect("172.8.4.101", ftp4go.DefaultFtpPort, "") if err != nil { fmt....阅读全文

博文 2015-11-18 13:00:02 shenshouer

golang 项目多文件编程示例

src/test_interface.git/main.go package main import ( task "test_interface.git/task" ) func main() { do := task.NewInter(task.NewTask()) do.OnInit() } src/test_interface.git/task/print.go package task import ( "fmt" ) type Stve struct { } func NewTask() Inter { return &Stve{} } func (self *Stve) OnInit() { fmt.Println("Hello wrold") } src/test_inter...阅读全文

博文 2015-10-15 11:00:01 徐学良

golang语法总结(八):类型零值、类型别名、类型转换

类型零值 变量声明为某种类型后的值就为该类型的零值,它不是空值。通常数值类型默认为0,bool为false,string为空字符串 类型别名 比如: type text stringfunc main() { var t text = "hello world" fmt.Println(t)} 类型转换 Go语言不存在隐式转换,必须显式转换,并且只能在两种相互兼容的类型间转换,转换示例: a := 3.14b := int(a)fmt.Println(b)var c int32 = 256var d = float64(c)fmt.Println(d...阅读全文

博文 2016-02-22 14:00:07 QQ245671051

golang set 使用

先获取set包 go get -u gopkg.in/fatih/set.v0 如下演示set并集,交集,差集的计算 package main import ( "fmt" "gopkg.in/fatih/set.v0" ) /*set并集 交集 差集计算示例*/ func main() { a := set.New(set.ThreadSafe) a.Add(1) a.Add(2) a.Add(3) b := set.New(set.ThreadSafe) b.Add(2) b.Add(3) b.Add(4) //并集 unionSet := set.Union(a, b) fmt.Printf("并集:%v\n", unionSet) //交集 intersectionSet := se...阅读全文

博文 2018-11-13 23:34:40 小风吹的我乱了

golang读取文本文件示例

一般文件比较小的话可以将文件全部读入内存中,然后转换成string再按行分割一下 func GetFileContentAsStringLines(filePath string) ([]string, error) { logger.Infof("get file content as lines: %v", filePath) result := []string{} b, err := ioutil.ReadFile(filePath) if err != nil { logger.Errorf("read file: %v error: %v", filePath, err) return result, err } s := string(b) for _, lineStr := ...阅读全文

博文 2016-02-10 02:00:02 xielingyun

golang zip 操作示例

下面的代码,来之golang的示例源码,其中涉及的常见zip文件,修改了部分代码, 在ExampleWriter中添加了如下 fw, err := os.Create("/home/xxx/mem_sub/go/z.zip") if err != nil { //panic(err) fmt.Println(err) return } defer fw.Close()屏蔽了以下部分 // Create a buffer to write our archive to. // buf := new(bytes.Buffer) 使之能够创建看的见的zip文件 package main import ( "archive/zip" // "bytes" "fmt" "io" "log" "os" ...阅读全文

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

Go-指针、传值与传引用、垃圾回收

要点 Go使用的*、&、new()这些运算符,和C++的用法完全一样。 有传值和传引用/传地址的概念,和C++一样。 Go没有new对应的delete操作,而是采用Java一样的垃圾自动回收机制。 传引用或指针主要用于用户自定义类型。 示例 package main import "fmt" /* D:\examples>go run helloworld.go 10 100 5 100 D:\examples> */ func main() { i := 10 pass_by_value(i) fmt.Println(i) pass_by_reference(&i) fmt.Println(i) x := new(int) *x = 5 fmt.Println(*x) pass_by_re...阅读全文

博文 2016-09-06 10:00:04 u013344915

《go语言程序设计》学习(一)

序言 2年前的这个时候认识到了golang,然后兴匆匆的去书店买了本书,go语言,云动力吧好像是,结果拿过来一开始,环境就设置不上,折腾了几天,然后就不了了之了。 1年前的这个时候,再次路过书店,看到了《go语言程序设计》这本书,按耐不住心痒痒,又买回来,结果看了两章,又头昏脑胀,没坚持下去。 前几天看很多人都在讨论golang,我就又去把书翻出来了,这次决定要再前进一步,争取把书看完。 (一个拖延症的懒癌患者的内心,是咆哮的) 一,示例代码:gobook已下载 二,开发环境:go 1.4,vim-go,vim-go的插件还是折腾了一下。。有些包直接go get拿不到,到golang的网站上,提供了一个tar的下...阅读全文

博文 2015-08-02 03:00:01 mruoli

阿里云存储OSS golang语言上传文件示例。

由于阿里那边没有提供golang示例只有自己写一个,如果发现问题希望给予纠正。 配置信息自己替换。 调用方法 Putobject("4.txt", []byte("123123fasdfasdfadfadfasfasdfsadf")) package oss import ( "bytes" "crypto/hmac" "crypto/sha1" "encoding/base64" "fmt" "io/ioutil" "mime" "net/http" "path/filepath" "time" ) func authorization(accesskeysecret, method, filemd5, filetype, date, CanonicalizedOSSHeaders, Ca...阅读全文

博文 2016-12-01 08:00:19 gzw13999

Go-godoc帮助系统

可以用godoc查询某个包/package/库或库函数的使用方法。通过这个命令,就可以在本地快速查找某个函数的使用方法&示例,对于效率提升还是很有帮助。示例: D:\examples>godoc fmt Println use 'godoc cmd/fmt' for documentation on the fmt command func Println(a ...interface{}) (n int, err error) Println formats using the default formats for its operands and writes to standard output. Spaces are always added between operands an...阅读全文

博文 2016-10-10 03:00:07 u013344915

golang 自定义错误示例

package main import ( "fmt" "time" ) // MyError is an error implementation that includes a time and message. type MyError struct { When time.Time What string } func (e MyError) Error() string { return fmt.Sprintf("%v: %v", e.When, e.What) } func oops() error { return MyError{ time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC), "the file system has gone...阅读全文

博文 2015-10-24 23:00:08 u011363248

BitTorrent DHT 协议的 GO 实现 DHT

DHT 是BitTorrent DHT 协议的实现,采用Go语言。主要包括以下部分: * [BEP-3 (part)](http://www.bittorrent.org/beps/bep_0003.html) * [BEP-5](http://www.bittorrent.org/beps/bep_0005.html) * [BEP-9](http://www.bittorrent.org/beps/bep_0009.html) * [BEP-10](http://www.bittorrent.org/beps/bep_0010.html) 展示截图: ![image](http://static.oschina.net/uploads/space/2016/0809/1135...阅读全文

开源项目 2016-08-29 04:00:02 shiyanhui

消息摘要算法示例(python和go)

常用的消息摘要算法有MD5和SHA,这些算法在python和go的库中都有,需要时候调用下就OK了,这里总结下python和go的实现。 一、python消息摘要示例 代码如下: #! /usr/bin/python ''' File : testHash.py Author : Mike E-Mail : Mike_Zhang@live.com ''' import hashlib src = raw_input("Input string : ") funcNameList = ["MD5","SHA1","SHA224","SHA256","SHA384","SHA512"] funcMap = { "MD5" : lambda cnt : hashlib.md5(cnt).hexdi...阅读全文

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

golang flag使用示例

package main import ( "fmt" "flag" ) func main(){ data_path := flag.String("D","/home/manu/sample/","DB data path") log_file := flag.String("l","/home/manu/sample.log","log file") nowait_flag :=flag.Bool("W",false,"do not wait until operation completes") flag.Parse() var cmd string = flag.Arg(0); fmt.Printf("action : %s\n",cmd) fmt.Printf("data pat...阅读全文

博文 2015-08-31 19:00:01 徐学良

Go-多文件构建

说明 go提供了package机制,可以构建库文件/函数到GOPATH中。对于仅和某个应用相关的模块来讲,放到GOPATH就不合适。但全部代码放到一个go文件又难以阅读和维护,此时,可以把代码分散到各个独立职责的文件中,但取为相同的package。 示例 这里有两个文件:main.go和util.go main.go package main //import "fmt" func main() { foo() } util.go package main import "fmt" func foo() { fmt.Println("foo()") } 运行 $ go run main.go util.go foo() $ 子目录 如果用子目录进行组织,则不行: $ ls main.go u...阅读全文

博文 2016-11-29 07:00:03 u013344915

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

GO语言练习:网络编程 ICMP 示例

1、代码 2、编译及运行 1、Go语言网络编程:ICMP示例代码 icmptest.go 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 "os" 7 "io" 8 "bytes" 9 ) 10 11 func main() { 12 if len(os.Args) != 2 { 13 fmt.Println("Usage : ", os.Args[0], "host") 14 os.Exit(0) 15 } 16 service := os.Args[1] 17 18 conn, err := net.Dial("ip4:icmp", service) 19 checkError(err) 20 21 var msg [512]byte 22 m...阅读全文

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

像Python那样跑go1的代码(Windows下双击运行)

Windows下,以".py"为扩展名的Python程序可以双击运行,用起来很爽,现在玩go语言,我也想这么玩…… 这里说说我的玩法。 示例代码(test.go): package main import ( "fmt" "time" ) func main() { fmt.Println("Test") time.Sleep(time.Duration(6) * time.Second) } Windows7 下,修改注册表: 路径:HKEY_CLASSES_ROOT\go_auto_file\shell\open\command 修改如下: "c:\go\bin\go.exe" run "%1" 现在在Windows下双击即可运行。比如示例代码的双击后运行效果: title为go.exe...阅读全文

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

windows下go编码转换问题

github上有两个package做编码转换,都是基于iconv,用到了cgo,在linux下没有问题,在windows下用,非常麻烦。采用mingw安装libiconv也不行,一直提示找不到libiconv方法。 最终找到一个官方实现(纯go实现): https://code.google.com/p/go/source/checkout?repo=text gbk转utf-8示例: func gbk2utf8(str byte[]) ([]byte, error) { return ioutil.ReadAll(transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewDecoder())) ...阅读全文

博文 2014-10-04 19:26:11 程序员Jack

Go 语言编写 CPython 扩展 goPy

goPy 是一个新的开源项目,实现了用 Go 语言来编写 CPython 扩展。 示例代码: 01 package simple 02 03 import ( 04 "fmt" 05 "gopy" 06 ) 07 08 func example(args *py.Tuple) (py.Object, error) { 09 fmt.Printf("simple.example: %v\n", args) 10 py.None.Incref() 11 return py.None, nil 12 } 13 14 func init() { 15 methods := []py.Method{ 16 {"example", example, "example function"}, 17 } 1...阅读全文

博文 2014-10-04 19:26:34 shihao

Go语言:使用sort包对任意类型元素的集合进行排序

使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法: // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int) bool // Swap swaps the elements with indexes i and j. Swap(i, j int) 以下为简单示例: //对任意对象进行排序 type Person struct { name string age ...阅读全文

博文 2015-06-17 23:02:08 books1958

理解oredev上go的一个示例

package main import( "io" "fmt" "log" "net" ) const listenaddr = "0.0.0.0:4000" var partner=make(chan io.ReadWriteCloser) func match(c io.ReadWriteCloser){ fmt.Fprintln(c,"wait for partner...") select{ case partner<-c: //do nothing case p := <-partner: chat(c,p) } } func chat(a,b io.ReadWriteCloser){ fmt.Fprintln(a,"yes,i got a partner...") fmt.Fpr...阅读全文

博文 2014-10-04 19:26:21 qingwa

Go 图像处理包Imaging

Imaging 是一个 Go 图像处理包,提供了基本的图像处理功能(调整大小,旋转,翻转,裁剪等),这个包基于标准的 Go 图像包。 采用任何实现 `image.Image` 接口作为输入的图像类型,并返回 `*image.NRGBA` 类型的新图像(32 位 RGBA 颜色) **示例:** 原始图像(将由 512x512px 转变为 128x128px) ![image](https://static.oschina.net/uploads/space/2017/0303/150730_wXfc_2720166.png...阅读全文

Go语言入门资料

1:Go语言项目地址 http://code.google.com/p/go/ 2:Go语言下载地址 http://code.google.com/p/go/downloads/list 3:Go语言中文翻译项目地址 http://code.google.com/p/golang-china/ 4:Goclipse插件下载地址 http://code.google.com/p/goclipse/ 5:Go语言官方在线入门示例 http://tour.golang.org/#1 6:Go语言API(CHM英文) http://download.csdn.net/detail/collonn/476655...阅读全文

博文 2014-11-10 12:00:04 collonn

Go语言学习示例

Go by Example Go is an open source programming language designed for building simple, fast, and reliable software. Go by Example is a hands-on introduction to Go using annotated example programs. Check out the first example or browse the full list below. Hello WorldValuesVariablesConstantsForIf/ElseSwitchArraysSlicesMapsRangeFunctionsMultiple Retur...阅读全文

博文 2015-06-19 22:00:25 boonya

Go学习笔记之:切片

切片是Go语言的关键类型之一,它提供了比数组更多的功能。 示例1: package main import "fmt" func main() { // 和数组不同的是,切片的长度是可变的。 // 我们可以使用内置函数make来创建一个长度不为零的切片 // 这里我们创建了一个长度为3,存储字符串的切片,切片元素 // 默认为零值,对于字符串就是""。 s := make([]string, 3) fmt.Println("emp:", s) // 可以使用和数组一样的方法来设置元素值或获取元素值 s[0] = "a" s[1] = "b" s[2] = "c" fmt.Println("set:", s) fmt.Println("get:", s[2]) // 可以用内置函数len获取切...阅读全文

博文 2014-11-26 08:00:01 Goopand

Go 唯一标识生成库 NUID

NUID 是一个高性能的唯一标识生成库,使用 GO 语言开发。 示例代码:

// Utilize the global locked instance
nuid := nuid.Next()

// Create an instance, these are not locked.
n := nuid.New()
nuid = n.Next()

// Generate a new crypto/rand seeded prefix.
// Generally not needed, happens automatically.
n.RandomizePrefix()阅读全文

go语言 功能测试和性能测试的示例

F:./src └─hello hello.go hello_test.go hello.go ========= package hello import "fmt" func Add(a, b int) (result int) { return a + b } func main() { fmt.Println("Hello, world. 你好,世界!") c := Add(1, 2) fmt.Println("c=", c) } hello_test.go package hello import ( "fmt" "testing" "time" ) func TestAdd1(t *testing.T) { fmt.Println("进行Add测试") r := Add(1, 2...阅读全文

lex in golang

var txt = `{key1 = "\"value1\"\n" | key2 = { key3 = 10 } | key4 = {key5 = { key6 = value6}}}` var s scanner.Scanner s.Init(strings.NewReader(txt)) var b []byte loop: for { switch tok := s.Scan(); tok { case scanner.EOF: break loop case '|': b = append(b, ',') case '=': b = append(b, ':') case scanner.Ident: b = append(b, strconv.Quote(s.TokenText()...阅读全文

博文 2015-06-17 20:17:47 templarzq

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 语言 make & new

make 与 new 都是 Go 语言分配变量内存的方式,其中 make 主要针对 slice、map 与 chan 变量类型的内存分配以及相应内部结构的初始化,而 new 可以申请任何类型变量内存,但是拿到内存后会赋零值,他对于 slice、map 以及 chan 类型变量的申请没有太大意义。下面依据实际示例对这两种内存分配方式的区别进行个简单分析。 分配 sclie var s0 []int s0 = append(s0, 10) fmt.Println(&s0, s0) s1 := new([]int) *s1 = append(*s1, 10) fmt.Println(s1, *s1) s2 := make([]int, 0) s2 = append(s2, 10) fmt.Prin...阅读全文

博文 2015-12-10 16:00:31 u013148156

Go学习笔记之:数组

数组是一个具有相同数据类型的元素组成的固定长度的有序集合。 在Go语言中,数组是值类型,长度是类型的组成部分,也就是说"[10]int"和“[20]int”是完全不同的两种数组类型。 同类型的两个数组支持"=="和"!="比较,但是不能比较大小。 数组作为参数时,函数内部不改变数组内部的值,除非是传入数组的指针。 数组的指针:*[3]int 指针数组:[2]*int 示例1: package main import "fmt" func main() { // 这里我们创建了一个具有5个元素的整型数组 // 元素的数据类型和数组长度都是数组的一部分 // 默认情况下,数组元素都是零值 // 对于整数,零值就是0 var a [5]int fmt.Println("emp:", a) // 我...阅读全文

博文 2014-11-26 08:00:01 Goopand