Пример0
https://tour.golang.org/flowcontrol/8
/*
Поиск квадратного корня по методу Ньютона
*/
package main
import (
"fmt"
)
func Sqrt(x float64) float64 {
z:=1.0
delta:=1.0
for ;Abs(delta)>0.0000000001; {
delta=(z*z-x)/(2*z)
z-=delta
}
return z
}
func Abs(x float64) float64{
if x<0 {
return -x
}else{
return x
}
}
func main() {
fmt.Println(Sqrt(2))
}
Пример1
https://tour.golang.org/moretypes/23
/*
Функция превращает строку в map, ключи которого - слова в строке(string), а значения - число, сколько раз встречается слово в строке
*/
import (
"golang.org/x/tour/wc"
"strings"
)
func WordCount(s string) map[string]int {
m := make(map[string]int)
substr_arr:=strings.Fields(s) //массив slices
for _,v:=range substr_arr{ //range для slices или maps
if _,ok:=m[v]; ok {
m[v]+=1
}else{
m[v]=1
}
}
return m
}
Пример2
https://tour.golang.org/moretypes/26
Implement a fibonacci function that returns a function (a closure) that returns successive fibonacci numbers (0, 1, 1, 2, 3, 5, ...).
package main
import "fmt"
// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
var i_2,i_1, cnt int = 0,1,0
return func() int{
var s int
if cnt<2 {
s=cnt
cnt+=1
return s
}else{
s=i_2+i_1
i_2=i_1
i_1=s
return s
}
}
}
func main() {
f := fibonacci()
for i := 0; i < 40; i++ {
fmt.Println(f())
}
}