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

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 面试题

分享出来几个go面试题,都非常简单,如果您有一些开发时候使用到的小技巧欢迎评论。 目前我写出来11个(再更新一道题目),未来会不定期更新。。。 1、写出下面代码输出内容。 package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer func() { fmt.Println("打印后") }() panic("触发异常") } 2、 以下代码有什么问题,说明原因 type student struct { Name string Age...阅读全文

博文 2017-06-19 10:28:00 诺唯

golang练习(一)循环与函数

地址:http://tour.go-zh.org/flowcontrol/8 练习:循环和函数 作为练习函数和循环的简单途径,用牛顿法实现开方函数。 在这个例子中,牛顿法是通过选择一个初始点 z 然后重复这一过程求 Sqrt(x) 的近似值: 为了做到这个,只需要重复计算 10 次,并且观察不同的值(1,2,3,……)是如何逐步逼近结果的。 然后,修改循环条件,使得当值停止改变(或改变非常小)的时候退出循环。观察迭代次数是否变化。结果与 [[http://golang.org/pkg/math/#Sqrt][math.Sqrt] 接近吗? 提示:定义并初始化一个浮点值,向其提供一个浮点语法或使用转换: z := float64(1) z := 1.0 package main import ...阅读全文

博文 2015-06-17 20:04:08 gaokecs1

django 密码加密算法的 go 语言版本

package main import ( "crypto/sha256" "encoding/base64" "golang.org/x/crypto/pbkdf2" "log" "strconv" ) // Django 的实现细节请参考 Python 和 django 文档: // django.contrib.auth.hashers.make_password // django.utils.crypto import pbkdf2 // hashlib.sha256 // base64 func main() { pwd := []byte("shangshanyouyu") // 用户设置的原始密码 salt := []byte("I1lrI7wqJOJZ") // 盐,是一个...阅读全文

博文 2015-11-06 19:00:10 nowboy11427

golang笔记——map

ages := make(map[string]int) // mapping from strings to ints 我们也可以用map字面值的语法创建map,同时还可以指定一些最初的key/value: ages := map[string]int{ "alice": 31, "charlie": 34, } 这相当于 ages := make(map[string]int) ages["alice"] = 31 ages["charlie"] = 34 使用内置的delete函数可以删除元素: delete(ages, "alice") // remove element ages["alice"] Map的迭代顺序是不确定的,并且不同的哈希函数实现可能导致不同的遍历顺序。在实践中,...阅读全文

博文 2016-03-27 15:00:01 tianyajuanke

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-08-14 12:00:00 u013210620

A tour of Go的疑问

Go 官网上给大家提供了很多练习,是学习Go的不错的途径,但是我遇到一个问题,这个练习中要求用Closure打印Fibonacci数列 http://tour.golang.org/moretypes/22 Exercise: Fibonacci closure package main import "fmt" // fibonacci is a function that returns // a function that returns an int. /*func fibonacci() func() int { x := 0 y := 1 z := 0 return func() int { z = x x = y y = x + y return z } }*/ func fi...阅读全文

博文 2015-12-23 04:00:00 niansiqiao

Go语言入门(四)——不定参数

不定参数类型 不定参数是指函数传入的参数个数为不定数量。 package main import ( "fmt" ) /* 不定参数函数 */ func Add(a int, args ...int) (result int) { result += a for _, arg := range args { result += arg } return } func main() { fmt.Println(Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) } 代码中的args是一个数组切片,而且只能放在参数中的最后面。 不定参数的传递 func SetData(args ...int) (result int) { //不定参数的传递 return Add(1, ar...阅读全文

博文 2016-02-16 10:00:00 jaykiller123

Go 语言实现exercise--Loops and Functions

求平方根的一种叫牛顿算法的文字,先给出一个猜测值,用连续逼近方法求出平方根。 首先我们设要求的这个数为a,它的平方根为x;然后我们一开始令x=a;然后我们进入一个循环,不断的令x=(x+a/x)/2,就是令x等于 x和a/x的平均值,这样迭代了7-10次左右就可以得到a的平方根x的近似值。 package mainimport ( "fmt" "math")func Sqrt(x float64) float64 { z := x for i := 0; i < 10; i++ { z = (z + x/z)/2 } return z}func main() { fmt.Println(Sqrt(2)) fmt.Println(math.Sqrt(2))...阅读全文

博文 2015-06-17 23:07:44 xiongwei1209

golang实现set集合

package set import ( "bytes" "fmt" ) func main() { } type HashSet struct { m map[interface{}]bool } func NewHashSet() *HashSet { return &HashSet{m: make(map[interface{}]bool)} } //添加 true 添加成功 false 添加失败 func (set *HashSet) Add(e interface{}) (b bool) { if !set.m[e] { set.m[e] = true return true } return false } //删除 func (set *HashSet) Remove(e in...阅读全文

博文 2016-09-12 20:00:32 lt695981642

golang实现set集合

package set import ( "bytes" "fmt" ) func main() { } type HashSet struct { m map[interface{}]bool } func NewHashSet() *HashSet { return &HashSet{m: make(map[interface{}]bool)} } //添加 true 添加成功 false 添加失败 func (set *HashSet) Add(e interface{}) (b bool) { if !set.m[e] { set.m[e] = true return true } return false } //删除 func (set *HashSet) Remove(e in...阅读全文

博文 2016-09-08 14:00:11 lt695981642

go第五天

go语言的循环 go里的循环比较简单只有for 1.普通for循环 for 初始化语句; 条件语句; 修饰语句 {} for i := 0; i < 5; i++ { fmt.Printf("This is the %d iteration\n", i) } 2.类似while循环 for i >= 0 { i = i - 1 fmt.Printf("The variable i is now: %d\n", i) } 3.无限循环 for{ ... } 4.for-range 结构 go特有的,它可以迭代任何一个集合(包括数组和 map)觉得和foreach循环很像 一般形式for ix, val := range coll { } 用来迭代字符串,它能够自动根据 UTF-8 规则识别 U...阅读全文

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

golang 50度灰里面的"for"声明中的迭代变量和闭包的问题 不解

* 打印three, three, three ``` package main import ( "fmt" "time" ) type field struct { name string } func (p *field) print() { fmt.Println(p.name) } func main() { data := []field{{"one"}, {"two"}, {"three"}} for _, v := range data { go v.print() } time.Sleep(3 * time.Second) //goroutines print: three, three, thre...阅读全文

Go 的快速键值存储Badger-go

一个可嵌入,持久,简单,快速的键值(KV)存储,纯 Go 编写。 Badger 在进行随机读取时比 RocksDB 快至少 3.5 倍。 对于 128B 到 16KB 之间的数据量,数据加载速度是 RocksDB 的 0.86x - 14 倍,随着数字大小的增加,Badger 获得了很大的发展。 另一方面,Badger 在范围键值迭代方面目前较慢,但是这有很大的优化空间。 纯 Go 编写 使用最新的研究来构建最快的键值存储。 简单 以 SSD 为中心的设计 ![image](https://static.oschina.net/uploads/space/2017/1006/082139_Japn_2903254.png) ![image](https://static.os...阅读全文

开源项目 2017-10-06 09:30:02 网友

go-bisection

最近写作业,遇到计算量很大的一道数学题,感觉还是喜欢go的所以第一个想到的是用go实现一下,省的手算了。 题目大概是 用bisection的方法find root of f(x)=x^(1/3)+3,需要几步? 把题目说清楚还有一个目的是,代码里有一句是注释掉的,root那句,需要注意,现在是要推算x^(1/3)的,所以得假设你现在是得不到x^(1/3)的。代码如下:目前代码有个问题,答案是14,通过一个公式得到,但运行代码得到的是15,目前想到的原因是,第一个error是直接就在的,不该count的,但是是强行解释,所以也可能是其他原因,先放这儿,有大牛欢迎来讲讲。还有一点是代码里也包含了一点regula-Falsi方法的实现,因为并不需要得到迭代次数,所以就只是在main里做了一点计算(...阅读全文

博文 2017-03-05 19:57:32 暗黑破坏球嘿哈

Golang的map迭代

Golang不同于Java等常见的语言,字节在语言层面支持了map。map类似于Java当中的Set,是数学中集合的概念。集合当中不会出现重复元素,并且是无序的。与此相关的就是数组和队列,它们是有序的。 前几天要做一个接口调用,需要用到安全机制,将请求参数编码出一个签名,一并用来发送请求。相关的可以参考《接口安全机制》。这里会涉及到两次取请求URL的步骤,一次是用来拼请求,一次是用来计算签名。当时机制的我,为了方便写代码,就将参数放在了map当中,遍历两次map就能够实现了。一般情况下都能够正常访问。极少数情况下是会提示调用失败的,其实就是签名或者参数错误。因为概率极低,所以没有引起注意。 但是一直觉得代码有点bug,大概位置自己也知道,肯定是发送HTTP请求的模块。后来,就去review了...阅读全文

博文 2017-02-09 12:25:15 Bryce

【Go学习笔记】8、map

map 类似其他语言中的哈希表或者字典,以key-value形式存储数据 key必须是支持==或!=比较运算的类型,不可以是函数、map或slice Map查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍 Map使用make()创建,支持:=这种简写方式 map([keyType]valueType,cap) ,cap表示容量,可省略 超出容量时会自动扩容,但尽量提供要一个合理的初始值 使用len()获取元素个数 键值对不存在时自动添加,使用delete()删除某键值对 使用for range 对map和slice进行迭代操作 123456789101112131415161718192021222324252627282930//k int v string var mapTmp...阅读全文

博文 2017-05-30 13:09:58 HundredLee

go实现generator

这是一篇短文。 用过python的都知道generator,也就是生成器。生成器函数返回一个迭代器。那么如果用golang如何来实现呢?两种方法:channel和闭包。 1234567891011121314151617181920212223242526272829303132333435363738394041424344package mainimport ( "fmt")//implement generator by closurefunc FibnacciClosure() func() (ret int) { a, b := 0, 1 return func() (ret int) { ret = b a, b = b, a+b return }}//implement gen...阅读全文

博文 2017-07-02 19:25:11 Tao Kelu