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

Go中的switch fallthrough

switch sExpr { case expr1: some instructions case expr2: some other instructions case expr3: some other instructions default: other code } sExpr和expr1、expr2、expr3的类型必须一致。Go的switch非常灵活,表达式不必是常量或整数,执行的过程从上至下,直到找到匹配项;而如果switch没有表达式,它会匹配true。 Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用f...阅读全文

go语言:flag的使用

go语言flag的使用 package main import ( "flag" "fmt" ) var music_file *string = flag.String("file", "musicfile", "Use -file ") func main() { flag.Parse() fmt.Println(*music_file) } 例如文件为flagTest.go go run flagTest.go -file "../music/sun.mp3" 即可指定file参数的值。 如果直接使用go run flagTest.go -file则会提示你-file的使用说明.-file="musicfile": Use -file 如...阅读全文

博文 2014-10-21 23:00:00 x369201170

go reflect TypeOf 与ValueOf

学习go的反射对于理解go的底层实现以及接口机制有着非常重要的价值;本篇文章从一个源程序来体验一下go反射的两个核心函数TypeOf 和ValueOf的使用方法,特别体验下怎么根据type构造type实例的办法。 package main import ( "fmt" "reflect" ) type Speaker interface { Speak()string Set(string) } type Teacher struct { Name string } func (this *Teacher) Speak() string { return this.Name } func (this *Teacher) Set(name string) { this.Name = name ...阅读全文

博文 2015-06-18 09:03:56 hittata

关于fmt.Scan()和fmt.Scanf()的区别

有人问道: 我刚开始接触go语言,在根据书写二分法的时候发现个问题。 虽然解决了,但搞不清楚原因是为什么。 代码如下: package main import "fmt" func main() { min, max := 0, 100 fmt.Printf("%d--%d", min, max) for min < max { i := (min + max) / 2 fmt.Printf("<=%d(y or n) ", i) var s string fmt.Scanf("%s", &s) if s != "" && s[0] == 'y' { max = i } e...阅读全文

go package的理解

golang package是基本的管理单元, 同一个package下面,可以有非常多的不同文件,只要 每个文件的头部 都有 如 "package xxx" 的相同name, 就可以 在主方法中使用 xxx.Method()调用不同文件中的方法了。 文件夹名字可以和这个package 名称不一致, 比如我有个文件夹名字是mypackage,其中包含了a.go,b.go, c.go三个文件 : mypackage | --a.go | --b.go | --c.go 比如a.go中有 Saya(),b.go中有Sayb() 而几个文件共同的package name 确是testpackage 所以在 主函数中调用a.go 和b.go文件中的各自方法只要用,testpackage.Saya() ...阅读全文

博文 2015-04-24 00:00:00 rojas

golang之flag.String

无论是c语言还是golang语言或是其他语言,启动应用程序时都可以带一些参数,然后系统根据传入的参数进行特点的工作。如:./main -b /home/backupdir -d true 那么如何更好的解析这些参数呢?前两周自己做项目时是通过 range os.Args 来解析这些参数。今天看到了 flag.String 这个方法,感觉之前做的好傻,觉得更应该用golang自带的flag.String来解析参数。 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 ) 7 8 func main() { 9 backup_dir := flag.String("b", "/home/default_dir", "backup path") 10 de...阅读全文

博文 2015-07-20 03:00:00 hezhixiong

golang的一个分页方法

需要做一分页。。就做了个方法,beego里的例子太麻烦了。还是弄个简单的吧,上代码。。 //分页方法,根据传递过来的页数,每页数,总数,返回分页的内容 7个页数 前 1,2,3,4,5 后 的格式返回,小于5页返回具体页数 func Paginator(page, prepage int, nums int64) map[string]interface{} { var firstpage int //前一页地址 var lastpage int //后一页地址 //根据nums总数,和prepage每页数量 生成分页总数 totalpages := int(math.Ceil(float64(nums) / float64(prepage))) //page总数 if page > tot...阅读全文

博文 2015-12-29 23:00:01 ciwei_ice

Golang实现snowflake算法(分布式唯一id生成器)

package main import ( "errors" "fmt" "sync" "time" ) const ( twepoch = int64(1417937700000) // 默认起始的时间戳 1449473700000 。计算时,减去这个值 DistrictIdBits = uint(5) //区域 所占用位置 NodeIdBits = uint(9) //节点 所占位置 sequenceBits = uint(10) //自增ID 所占用位置 /* * 1 符号位 | 39 时间戳 | 5 区域 | 9 节点 | 10 (毫秒内)自增ID * 0 | 0000000 00000000 00000000 00000000 00000000 | 00000 | 000000 0...阅读全文

博文 2017-04-25 07:00:25 路人甲777

golang的分页例子, 使用了beego,ameiziui

//分页方法,根据传递过来的页数,每页数,总数,返回分页的内容 7个页数 前 1,2,3,4,5 后 的格式返回,小于5页返回具体页数 func Paginator(page, prepage int, nums int64) map[string]interface{} { var firstpage int //前一页地址 var lastpage int //后一页地址 //根据nums总数,和prepage每页数量 生成分页总数 totalpages := int(math.Ceil(float64(nums) / float64(prepage))) //page总数 if page > totalpages { page = totalpages } if page <= 0 {...阅读全文

博文 2016-01-06 03:00:00 bingciwei

golang flag包

go flag 包用来解析命令行参数,通过一个简单的例子来了解下 package main import ( "flag" "fmt" ) func main() { //参数1:命令行传递参数的名称 参数2:默认值 参数3:参数的说明 username := flag.String("name", "", "Input your name") //注意 username 是string 的指针 type: *string // 在例如: // var ip = flag.Int("flagname", 1234, "help message for flagname") //ip 的类型是: *int flag.Parse() fmt.Println("Hello,", *username...阅读全文

博文 2016-01-15 03:00:00 davin

go语言运行shell命令

// go语言运行shell命令 package main import ( "os/exec" "fmt" "os" "strings" ) func main() { var ip, whoami []byte var err error var cmd *exec.Cmd // 执行单个shell命令时, 直接运行即可 cmd = exec.Command("whoami") if whoami, err = cmd.Output(); err != nil { fmt.Println(err) os.Exit(1) } // 默认输出有一个换行 fmt.Println(string(whoami)) // 指定参数后过滤换行符 fmt.Println(strings.Trim(str...阅读全文

博文 2017-06-07 12:05:55 广训

golang学习的点点滴滴:struct匿名字段

package main import "fmt" type Base struct { Name string Age int } type Child struct { Base // 匿名字段, 默认把Base的所有字段都继承过来了。 这样看起来才像真正的继承 Age int } func main() { c := new(Child) c.Name = "hello" // 可以直接使用Base中的字段 c.Age = 20 // 如果有重复的, 则最外的优先 fmt.Println(c.Name) // hello fmt.Println(c.Age) // 20 fmt.Println(c.Base.Age) // 要访问Base中的,可以这样写 0 ...阅读全文

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

Docker 管理工具 Shipyard

Shipyard 是一个基于 Web 的 [Docker](http://www.oschina.net/p/docker) 管理工具,支持多 host,可以把多个 Docker host 上的 containers 统一管理;可以查看 images,甚至 build images;并提供 RESTful API 等等。 Shipyard 要管理和控制 Docker host 的话需要先修改 Docker host 上的默认配置使其支持远程管理。 ![Login](http://static.oschina.net/uploads/img/201312/15230303_JvLZ.jpg) ![Containers](http://static.oschina.net/uploads/i...阅读全文

开源项目 2013-12-14 16:00:00 shipyard

Go的AES加密的默认工作模式的吗?

如果是的话 这段Node.js加密 var cipher = crypto.createCipher('aes-128-ecb', key); var encrypted = ""; encrypted += cipher.update(plaintext, 'binary', 'base64'); 应该是转换成下面的Go代码 block, err := aes.NewCipher(key) if err != nil { return nil, err } blockSize := block.BlockSize() origData = PKCS5Padding(origData, blockSize) // origData...阅读全文

msgpack在java/c和go中序列化的区别-解决

既然已经知道msgpack-java/msgpack-c里,默认情况下把class pack成类似json-array 而msgpack-go,默认情况下把class pack成类似json-map 顺着这个,翻看msgpack-Go的代码,找到了MsgpackHandle 。。。。中间过程省略 最后找到答案,其实msgpack-go已经提供好api package main import ( "fmt" "github.com/ugorji/go/codec" ) type UserStruct struct { ID int32 Name string } var ( b []byte mh codec.MsgpackHandle ) func main() { user := User...阅读全文

博文 2014-10-04 19:26:30 咖啡伴侣

Linux下64 位 预编译 的 go 1.6.2 安装

go 安装 - 1.6.2 OS: Linux, 64位, readhat 7.2 使用官网预编译gz包安装 1. 网址 https://golang.org/ 目前版本 1.6.2 下载页 https://golang.org/dl/ https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz 2. 解压缩 go要求ROOT 目录在 /usr/local 下,解压命令: [root@ip-172-30-0-110 home]# tar -C /usr/local -xf go1.6.2.linux-amd64.tar.gz [root@ip-172-30-0-110 home]# ls /usr/local/ bin e...阅读全文

博文 2016-06-11 20:00:01 XuYongshi02

编程年·2015活动「邀请函」

尊敬的先生/女士: 北京矩道优达网络科技有限公司·诚邀您参加我们的新活动"编程年·2015",在 2015 年学编程。 一个呼吁“全民学编程”的站点,只需要简单输入邮箱报名,你将免费得到手把手教你编程的课程,新年到来时,你将收到老师的邮件。 从此,自己做应用和网站将不再是梦想,我们许诺你在未来的一年成为会编程的魔法师。 内页是一个邀请好友排名得奖品的活动,奖品包含了42寸电视、iPad、Xbox、锤子T1、投影键盘等或酷或萌的奖品。 参加活动请C戳------>[http://url.cn/YemAF9](http://url.cn/YemAF9) (谨记:BOSS承诺:凡通过内部员工邀请链接参加活动全部都送10积分作为初始积分,还有只要不作弊,自己人...阅读全文

天呐!充值美团云送泰国游!

天呐!充值美团云送泰国游 活动1:充值畅享泰国游 ![Untitled.png](http://studygolang.qiniudn.com/151214/2e927865d2c57a25c1c759ed8f337728.png) (1)活动期间美团云账户累计充值满2888元,即送1张面值2000元的泰国5天4晚跟团游套票,累计充值5000元送2张泰国游套票,累计额充值10000元送4张泰国游套票,累计充值20000元送8张泰国游套票,累计充值30000元送12张泰国游套票(注:不包含往返机票,仅包括泰国当地食宿交通和固定景区费用,2016年全年预约有效) (2)充值超出3万元部分不再追加赠送泰国游套票。 累计充值金额 充值奖品 2888元 1张泰国游套票 500...阅读全文

golang优化

// MatrixCalcTest project main.go package main import ( "fmt" "time" ) const cSize int = 30 type mymatrix [cSize][cSize]int func mkmatrix(rows, cols int, mx *mymatrix) { rows-- cols-- count := 1 for r := 0; r <= rows; r++ { for c := 0; c <= cols; c++ { mx[r][c] = count count++ } } } func multmatrix(rows, cols int, m1, m2 *mymatrix, mm *mymatrix) { ...阅读全文

博文 2014-12-11 22:00:06 flyking

golang学习的点点滴滴:接口组合

package main import "fmt" type IReader interface { Read(file string) []byte } type IWriter interface { Write(file string, data []byte) } // 接口组合, 这些默认就继承了Reader和Writer中的抽象方法 type IReadWriter interface { IReader IWriter } type ReadWriter struct { } func (rw *ReadWriter) Read(file string) []byte { return nil } func (rw *ReadWriter) Write(file string,...阅读全文

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

Go 1.3 正式发布,支持谷歌 NaCL

Google今天发布了Go语言1.3版本。新的版本改进了一些功能,支持在新环境中运行,显著改进链接器和编译器等,提供了更好的性能。目前,用户可以下载安装了。 主要改进包括: Godoc,Go文档服务器,目前支持静态分析;支持查看文档包、资源视图功能,查看文档细节; 支持Native Client(NaCL)虚拟机架构; 支持平台包括:DragonFly BSD、 Plan 9、 Solaris操作系统,查看安装资源; Go编译器生成二进制代码的性能得到了改善;提升垃圾回收机制;一种新的“ contiguous”堆栈管理策略;更快的race detector(数据检测)以及改进正则表达式处理程序。 显著改进链接器和编译器,可以更快地编译程序。 下载页:http://golang.org/dl/...阅读全文

博文 2014-10-09 16:00:05 newer7

go学习笔记-go语言传值默认采用value还是reference?

看下面的程序 package main import "fmt" type Question struct { title string detail string } func (ques Question) Print() { fmt.Println(ques.title) } func (ques Question) Update2(title string) { ques.title = title } func (ques *Question) Update(title string) { ques.title = title } func main() { ques := Question{ title: "why", detail: "haha", } ques.Print()...阅读全文

博文 2015-12-31 03:00:00 inevermore

Zstd算法Golang应用

https://github.com/datadog/zstd import ( “zstd" "io" ) type ZstdEncoder struct { File *os.File ZstdWriter *zstd.Writer } //level是压缩级别:1~19,越大越慢。默认为3 func NewZstdEncoder(filename string, level int) (*ZstdEncoder,error) { f,err := os.Create(filename) if err != nil { return nil, err } w := zstd.NewWriterLevel(f,level) return &ZstdEncoder{File:f,ZstdWr...阅读全文

博文 2016-10-21 08:00:17 shengjuntu

history.back()和history.go()的区别

Javascript:history.go()和history.back()的用法和区别 go(-1): 返回上一页,原页面表单中的内容会丢失;history.go(-1):后退+刷新;history.go(1) :前进 back(): 返回上一页,原页表表单中的内容会保留; history.back():后退 ; history.back(0) 刷新; history.back(1):前进 不同的浏览器的后退行为也是有区别的,而区别就跟Javascript:history.go()和history.back()的区别类似。 chrome和ff浏览器后退页面,会刷新后退的页面,若有数据请求也会提交数据申请。类似于 history.go(-1) 而safari(包括桌面版和ipad版本)的后退...阅读全文

博文 2016-09-11 17:00:01 yuan1013922969

【译】GOPATH的默认值

从Go 1.8开始,如果GOPATH的环境变量为空,Go将会设置一个默认的GOPATH环境变量。 Go初学者第一次安装完Go之后,他们往往会因为忘记设置GOPATH环境变量而得到you have to set a GOPATH这样的错误。这个需求的优先级逐渐变高。对于Go的新用户来说,解释GOPATH的作用、指导他们如何设置GOPATH将会使它们不能专注使用Go。尤其是有些时候,这些人并不是要去使用Go语言去开发,而是使用go get去下载一些必要的命令。 Go 1.8将会设置默认的GOPATH。如果你自己没有设置GOPATH,Go将会使用默认值。默认GOPATH是: 在Unix-like系统上是在$HOME/go目录下 在Windows系统下是%USERPROFILE%\go 虽然已经有了...阅读全文

go环境配置

第一步:下载go1.4.1.windows-amd64.msi默认安装好,添加bin路径到classpath 第二步:新建文本保存以下代码,放到C盘根目录,命名为test.go package main import "fmt" func main() { fmt.Println("Hello, World!") } 第三步:测试配置是否成功. Hello,World!配置成功...阅读全文

博文 2015-04-22 08:00:00 Junmay

go安装方法及安装脚本

从google网站的go下载页找到对应的包 本文参考自官方手册 http://golang.org/doc/install#download go在运行时会读取环境变量,如未读到相关环境变量,则按默认值运行 例如${GOROOT}为安装位置,如未正确设置,会无法使用。 在家目录(~)下的.bashrc文件最后加入以下内容 $ vi .bashrc #go安装的位置 export GOROOT=$HOME/go #类似工作空间 export GOPATH=$HOME/mygo #将bin目录加入环境变量 export PATH=${PATH}:${GOPATH}/bin:$GOROOT/bin #声明32位还是64位 export GOARCH=amd64 #声明操作系统类型 export G...阅读全文

博文 2016-03-09 00:00:01 S1234567_89

再看Go语言的分段栈

2013-12-02 再看Go语言的分段栈 再看Go语言的分段栈 Go语言1.2今天发布了,其中有一项改变是默认的栈大小从之前的4096增加到了8K。记得早些时候就有人提到这个代码改动,还提醒大家注意,说每条网络连接开一个goroutine现在消耗内存会翻倍了。当时没有认真想,就觉得好像是那么回事。并且也没有深究Go为什么会做出这个改动。 直到今天看到Go 1.3的路线,说下个版本中将会做出的一个重大的改动就是不再使用分段栈的设计。这下我才觉得应该好好审视一下Go语言的分段栈设计了。 第一个问题就是:4k还是8k? 最初Go将一个goroutine的初始栈大小定为4k,正好一个操作系统内存页的大小,这是一个并没有经过深思熟虑的设计。这个值的大小本来是应该跟据大多数goroutine运行时消耗...阅读全文

博文 2015-03-20 13:24:21 zenlife

静态博客生成器CHCA

一个使用 golang 开发的博客生成器。 chca init 用于初始化博客,会自动生成config.yml 初始化以后需要在config.yml文件同目录下创建theme文件夹用于存放模板文件 模板文件夹结构 blog 模版文件夹 -- assets 资源文件夹 -- -- css -- -- js -- layout 布局文件夹 -- -- main.html 公共布局 -- -- index.html 主页 -- -- post.html 文章页 -- -- archive.html 导航导航页 -- -- category.html 分类导航页 -- -- tag.html 标签导航页 -- -- page.html 标签、导航和分类列表页面 新建m...阅读全文

奇怪的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

idea配置golang

用os x的installer pkg安装go到默认路径/usr/local/go下面之后,进入idea提示找不到GOROOT和GOPATH 直接在terminal输入下列命令 launchctl setenv GOROOT /usr/local/go launchctl setenv GOPATH /Users/yourname/go 再进入即可。 版权声明:本文为博主原创文章,未经博主允许不得转载...阅读全文

博文 2015-10-22 19:00:01 kcccss111

go语言编译记录

$ 6g mypak.go #先编译自定义包,生成mypak.6 $ 6g test.go # 然后编译,生成test.6 $ 6l -o go_test test.6 # 链接生成新文件名 go_test $ go_test hello, world 如在程序中有自定义包(如本例test.go中引用了mypak包),则需要使用 import("./mypak"),其中 ./ 告诉编译器(compiler)使用我们自己的package,而不是在默认的package路径中找,而且编译时,需要先编译mypak.go,然后再编译test.go,要注意顺...阅读全文

博文 2014-10-04 19:26:16 zdrqq

go默认httpclient的UserAgent在哪里设置的?

代码 ``` func main() { http.Get("http://localhost:8888/hello") } ``` header 是如下 ``` map[User-Agent:[Go-http-client/1.1] Accept-Encoding:[gzip]] ``` 请问下大家,这个User-Agent是在哪里设置的,我用debug从头跟到尾,直到程序结束Header都是空,为什么收到的请求User-Agent变成了Go-http-client/1.1 , 这个是谁填的,难到不是go填的...阅读全文

Go 1.13设置代理

在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。 设置GOPROXY代理: go env -w GOPROXY=https://goproxy.cn,direct 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔: go env -w GOPRIVATE=*.gitlab.com,*.gitee.com 如果在运行go mod vendor时,提示Get https://sum.golang.org/lookup/xxxxxx: dial tcp 216.58.200.49:443: i/o timeout,则是因为Go 1.13设置了默认的GOSUMDB=sum.golang.org,这个网站是...阅读全文

博文 2019-09-26 14:33:27 aside section ._1OhGeD

go语言, defer con.Close() 使用之一

defer con.Close() //可以接收for循环的错误 然后默认退出连接 这样可以使程序不至于崩溃 要不然会直接退出程序 for { length, err2 := con.Read(msg) if err2 != nil { addMsg("与服务器断开连接!\n") return } str = string(msg[0:length]) out, _ := iconv.ConvertString(str, "gb2312", "utf-8") outTE.AppendText("From: ") //addMsg(str) addMsg(out) if str == "00" { //addMsg("00") con.Write([]byte("00")) } else { ...阅读全文

博文 2016-04-18 15:00:01 xwiwi

golang 分页

工具包tools/paging.go package tools import ( "math" ) func CreatePaging(page, pagesize, total int64) *Paging { if page < 1 { page = 1 } if pagesize < 1 { pagesize = 10 } page_count := math.Ceil(float64(total) / float64(pagesize)) paging := new(Paging) paging.Page = page paging.Pagesize = pagesize paging.Total = total paging.PageCount = int64(page_coun...阅读全文

博文 2018-04-24 17:33:06 别人说我名字很长

go proxy 设置

在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。 设置GOPROXY代理: go env -w GOPROXY=https://goproxy.cn,direct 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔: go env -w GOPRIVATE=*.gitlab.com,*.gitee.com 如果在运行go mod vendor时,提示Get https://sum.golang.org/lookup/xxxxxx: dial tcp 216.58.200.49:443: i/o timeout,则是因为Go 1.13设置了默认的GOSUMDB=sum.golang.org,这个网站是...阅读全文

博文 2019-10-09 18:32:46 aside section ._1OhGeD

2017年教师节 本站功能升级

Go语言中文网祝广大的教师节日快乐! 今天本站做了两个功能升级: 1. 本站主题发布一段时间后是不能再修改的,为了方便对主题进行补充说明,增加了附言功能,在详情页可以看到附言按钮: ![image.png](https://static.studygolang.com/170910/9c1b320f1528e6bbdabb4bad1c2a397c.png) 2. 主题发布和回复,支持拖拽图片、QQ或微信等截图粘贴图片,直接插入 markdown 的图片语法,方便大家更快发布内容。上面的图片就是通过QQ截图,然后直接在该编辑框粘贴上传的。是不是很方便...阅读全文

golang json Unmarshal 精度问题

golang使用json.Unmarshal的时候,有些数字类型的数据会默认转为float64,而一些数据因其比较大,导致输出的时候会出现数据与原数据不等的现象,解决办法是,将此数据类型变为json.Number,如下: type MyData struct { Nid json.Number `json:"nid"` } func main() { var testJson string = `{"nid":114420234065740369922}` var data MyData json.Unmarshal([]byte(testJson), &data) fmt.Println(data.Nid.String()) ...阅读全文

博文 2019-01-15 23:34:42 咣咣当