分享
  1. 首页
  2. 文章

Go 语言教程实战

mebusw · · 17736 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

安装在线教程

由于墙,golang.org 国内无法访问,其在线教程也一样 tutorial.golang.org http://go-tour-zh.appspot.com/


可以在本机运行,

先安装Go 编译器 http://code.google.com/p/go/downloads/list


然后安装教程

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 <- t.Value
		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 <-ch1 != <-ch2 {
			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)
}




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

本文来自:CSDN博客

感谢作者:mebusw

查看原文:Go 语言教程实战

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
17736 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏