Sync
This commit is contained in:
		
							parent
							
								
									194ca9b7a9
								
							
						
					
					
						commit
						cfd7ab8a0b
					
				@ -1,39 +0,0 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import "fmt"
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	var aa [2]string
 | 
			
		||||
 | 
			
		||||
	aa[0] = "Hello"
 | 
			
		||||
	aa[1] = "World"
 | 
			
		||||
	fmt.Println(aa[0], aa[1])
 | 
			
		||||
	fmt.Println(aa)
 | 
			
		||||
 | 
			
		||||
	primes := [6]int{2, 3, 5, 7, 11, 13}
 | 
			
		||||
	fmt.Println(primes)
 | 
			
		||||
 | 
			
		||||
	var s []int = primes[1:4]
 | 
			
		||||
	fmt.Printf("The primes are %d and the slice is %d", primes, s)
 | 
			
		||||
 | 
			
		||||
	// Slices are references to array sections
 | 
			
		||||
	// Changing elements in a slice results in changes to the array
 | 
			
		||||
	// So other slices referencing the same array section will also be changed
 | 
			
		||||
 | 
			
		||||
	names := [4]string{
 | 
			
		||||
		"John",
 | 
			
		||||
		"Paul",
 | 
			
		||||
		"George",
 | 
			
		||||
		"Ringo",
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println(names)
 | 
			
		||||
 | 
			
		||||
	a := names[0:2]
 | 
			
		||||
	b := names[1:3]
 | 
			
		||||
	fmt.Println(a, b)
 | 
			
		||||
 | 
			
		||||
	// Now make some changes
 | 
			
		||||
	b[0] = "XXX"
 | 
			
		||||
	fmt.Println(a, b)
 | 
			
		||||
	fmt.Println(names)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								tour_of_go/l4/exercise-fibonacci-closure.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								tour_of_go/l4/exercise-fibonacci-closure.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import "fmt"
 | 
			
		||||
 | 
			
		||||
func fibonacci() func() int {
 | 
			
		||||
	previous := 0
 | 
			
		||||
	current := 0
 | 
			
		||||
	result := 0
 | 
			
		||||
	return func() int {
 | 
			
		||||
		if current == 0 {
 | 
			
		||||
			current = 1
 | 
			
		||||
		} else if current == 1 && result == 0 {
 | 
			
		||||
			result = current
 | 
			
		||||
		} else {
 | 
			
		||||
			result = previous + current
 | 
			
		||||
			previous = current
 | 
			
		||||
			current = result
 | 
			
		||||
		}
 | 
			
		||||
		return result
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	f := fibonacci()
 | 
			
		||||
	for i := 0; i < 10; i++ {
 | 
			
		||||
		fmt.Println(f())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								tour_of_go/l4/exercise-maps.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								tour_of_go/l4/exercise-maps.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"golang.org/x/tour/wc"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func WordCount(s string) map[string]int {
 | 
			
		||||
	result := map[string]int{}
 | 
			
		||||
	fields := strings.Fields(s)
 | 
			
		||||
	for i := range fields {
 | 
			
		||||
		word := fields[i]
 | 
			
		||||
		_, exists := result[word]	
 | 
			
		||||
		if exists == true {
 | 
			
		||||
			result[word] += 1
 | 
			
		||||
		} else {
 | 
			
		||||
			result[word] = 1
 | 
			
		||||
		}
 | 
			
		||||
	} 
 | 
			
		||||
	return result
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	wc.Test(WordCount)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										26
									
								
								tour_of_go/l4/exercise-slices.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								tour_of_go/l4/exercise-slices.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"golang.org/x/tour/pic"
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func Pic(dx, dy int) [][]uint8 {
 | 
			
		||||
	pic := make([][]uint8, dy)
 | 
			
		||||
	for i := range(dy) {
 | 
			
		||||
		inner_slice := make([]uint8, dx)
 | 
			
		||||
		for y := range(dx) {
 | 
			
		||||
			res := i * y
 | 
			
		||||
			inner_slice[y] = uint8(res) 
 | 
			
		||||
			
 | 
			
		||||
		}
 | 
			
		||||
		pic[i] = inner_slice
 | 
			
		||||
	}
 | 
			
		||||
	return pic
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	s := Pic(8, 8)
 | 
			
		||||
	fmt.Println(s)
 | 
			
		||||
	pic.Show(Pic)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								tour_of_go/l4/function-closures.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								tour_of_go/l4/function-closures.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import "fmt"
 | 
			
		||||
 | 
			
		||||
func adder() func(int) int {
 | 
			
		||||
	sum := 0
 | 
			
		||||
	return func(x int) int {
 | 
			
		||||
		sum += x
 | 
			
		||||
		return sum
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	pos, neg := adder(), adder()
 | 
			
		||||
	for i := 0; i < 10; i++ {
 | 
			
		||||
		fmt.Println(
 | 
			
		||||
			pos(i), neg(-2*i),
 | 
			
		||||
		)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								tour_of_go/l4/function-values.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tour_of_go/l4/function-values.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"math"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func compute(fn func(float64, float64) float64) float64 {
 | 
			
		||||
	return fn(3,4)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	hypot := func(x, y float64) float64 {
 | 
			
		||||
		return math.Sqrt(x*x + y*y)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println(hypot(5, 12))
 | 
			
		||||
 | 
			
		||||
	fmt.Println(compute(hypot))
 | 
			
		||||
	fmt.Println(compute(math.Pow))
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								tour_of_go/l4/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tour_of_go/l4/go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
module exercise-maps.go
 | 
			
		||||
 | 
			
		||||
go 1.24.5
 | 
			
		||||
 | 
			
		||||
require golang.org/x/tour v0.1.0
 | 
			
		||||
							
								
								
									
										2
									
								
								tour_of_go/l4/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								tour_of_go/l4/go.sum
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
golang.org/x/tour v0.1.0 h1:OWzbINRoGf1wwBhKdFDpYwM88NM0d1SL/Nj6PagS6YE=
 | 
			
		||||
golang.org/x/tour v0.1.0/go.mod h1:DUZC6G8mR1AXgXy73r8qt/G5RsefKIlSj6jBMc8b9Wc=
 | 
			
		||||
							
								
								
									
										35
									
								
								tour_of_go/l4/maps.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								tour_of_go/l4/maps.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import "fmt"
 | 
			
		||||
 | 
			
		||||
type Vertex struct {
 | 
			
		||||
	Lat, Long float64
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var m map[string]Vertex
 | 
			
		||||
var new_m = map[string]Vertex{
 | 
			
		||||
	"Bell Labs": Vertex{
 | 
			
		||||
		40.68433, -74.39967,
 | 
			
		||||
	},
 | 
			
		||||
	"Google": Vertex{
 | 
			
		||||
		37.42202, -122.08408,
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// The above can also be written
 | 
			
		||||
var new_new_m = map[string]Vertex{
 | 
			
		||||
	"Bell Labs": {40.68433, -74.39967},
 | 
			
		||||
	"Google": {37.42202, -122.08408},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	m = make(map[string]Vertex)
 | 
			
		||||
	m["Bell Labs"] = Vertex{
 | 
			
		||||
		40.68433, -74.39967,
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println(m["Bell Labs"])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	fmt.Println(new_m)
 | 
			
		||||
	fmt.Println(new_new_m)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								tour_of_go/l4/mutating-maps.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								tour_of_go/l4/mutating-maps.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import "fmt"
 | 
			
		||||
 | 
			
		||||
runc main() {
 | 
			
		||||
	m := make(map[string]int)
 | 
			
		||||
 | 
			
		||||
	m["Answer"] = 42
 | 
			
		||||
	fmt.Println("The value:", m["Answer"])
 | 
			
		||||
 | 
			
		||||
	delete(m, "Answer")
 | 
			
		||||
	fmt.Println("The value:", m["Answer"])
 | 
			
		||||
 | 
			
		||||
	v, ok := m["Answer"]
 | 
			
		||||
	fmt.Println("The value:", v, "Present?", ok)
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user