Golang学习笔记_基础语法,数组,切片,,映射,闭包

 
Category: GoLang

写在前面

后端, 得开始看看 Go 语言了, 感觉还挺好玩的, 试试.

虽然距离秋招的时间不多了…

教程就是官网的 Tour of Go, 我看的中文版, 还可以, 很详细.

数组

切片

练习题:

Go 语言之旅;

package main

import (
	"math"

	"golang.org/x/tour/pic"
)

func f(x int, y int) int {
	_ = math.Log // placeholder
	// return (x + y) / 2
	// return x * y
	// return x ^ y
	// return x * int(math.Log(float64(y))) // cast
	return x % (y + 1)
}

func Pic(dx, dy int) [][]uint8 {
	ans := make([][]uint8, dy)
	for i := 0; i < dy; i++ {
		tmp := make([]uint8, dx)
		for j := 0; j < dx; j++ {
			tmp[j] = uint8(f(i, j)) // cast
		}
		ans[i] = tmp
	}
	return ans
}

func main() {
	pic.Show(Pic)
}

映射

练习

Go 语言之旅;

package main

import (
	"strings"

	"golang.org/x/tour/wc"
)

func WordCount(s string) map[string]int {
	tmp := strings.Fields(s)
	ans := make(map[string]int)
	for _, itm := range tmp {
		ans[itm] += 1
	}
	return ans
}

func main() {
	wc.Test(WordCount)
}

函数

package main

import "fmt"

// 返回一个“返回int的函数”
func fibonacci() func() int {
	a, b := 0, 1
	return func() int {
		tmp := a
		a, b = b, a+b
		return tmp
	}
}

func main() {
	f := fibonacci()
	for i := 0; i < 10; i++ {
		fmt.Println(f())
	}
}