golang c 语言教程中文,Go 语言教程实战

安装在线教程

可以在本机运行,

然后安装教程

go get code.google.com/p/go-tour/gotour

或者中文的

go get bitbucket.org/mikespook/go-tour-zh/gotour

最后执行安装产生的gotour执行文件,即可在http://localhost:3999

打开教程。

一些练习的答案

#46  练习:斐波纳契闭包

package main

import "fmt"

// fibonacci 函数会返回一个返回 int 的函数。

func fibonacci() func() int {

var a int = 1

var b int = 1

return func() int {

c := a+b

a = b

b = c

return c

}

}

func main() {

f := fibonacci()

for i := 0; i < 10; i++ {

fmt.Println(f())

}

}

#69  练习:等价二叉树

package main

import (

"bitbucket.org/mikespook/go-tour-zh/tree"

"fmt"

)

/*

type Tree struct {

Left *Tree

Value int

Right *Tree

}

*/

// Walk 步进 tree t 将所有的值从 tree 发送到 channel ch。

func Walk(t *tree.Tree, ch chan int) {

if t != nil {

Walk(t.Left, ch)

ch

Walk(t.Right, ch)

}

}

// Same 检测树 t1 和 t2 是否含有相同的值。

func Same(t1, t2 *tree.Tree) bool {

ch1 := make(chan int, 10)

go Walk(t1, ch1)

ch2 := make(chan int, 10)

go Walk(t2, ch2)

for i := 0; i < 10; i++ {

if

return false

}

}

return true

}

func main() {

fmt.Println(Same(tree.New(1), tree.New(1)))

}

#57练习:错误

package main

import (

"fmt"

)

type ErrNegativeSqrt float64

func (e ErrNegativeSqrt) Error() string {

return fmt.Sprintf("cannot Sqrt negative number: %f", e)

}

func Sqrt(f float64) (float64, error) {

if f < 0 {

return 0, ErrNegativeSqrt(f)

}

x := f

for i := 0; i < 10; i++ {

x = (x + f/x) / 2

}

return x, nil

}

func main() {

fmt.Println(Sqrt(2))

fmt.Println(Sqrt(-2))

}

#44  练习:Map

package main

import (

//"fmt"

"strings"

"bitbucket.org/mikespook/go-tour-zh/wc"

)

func WordCount(s string) map[string]int {

result := map[string]int {}

f := strings.Fields(s)

for _, v := range f {

result[v] += 1

}

return result

}

func main() {

wc.Test(WordCount)

}

有疑问加站长微信联系(非本文作者)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值