这里面记录一些学习go的基础知识。我希望爱我的人不寂寞,我希望我爱的人喜欢我
go的基础知识
一、go中的map的使用
package main import ( "fmt" ) type PersonInfo struct { ID string Name string Address string } func main() { // declare map // var personDB map[string] PersonInfo // create map var personDB = make(map[string] PersonInfo, 100) // insert data personDB["LL"] = PersonInfo{"123456", "LL", "wuhan"} personDB["huhx"] = PersonInfo{"123456", "huhx", "huanggang"} // query key is exiest person, ok := personDB["huhx"] if ok { fmt.Println("Found Person: ", person.Name, ", address", person.Address) // Found Person: huhx , address huanggang } else { fmt.Println("No person found") } // delete key from map fmt.Println("Before delete: ", len(personDB)) // Before delete: 2 delete(personDB, "huhx") fmt.Println("After delete: ", len(personDB)) // After delete: 1 }
二、go中数组切片的使用
package main import "fmt" func printArray(array []int) { for _, v := range array { fmt.Print(v, " ") } fmt.Println() } func main() { mySlice := make([]int, 5, 10) fmt.Println("len: ", len(mySlice)) // len: 5 fmt.Println("cap: ", cap(mySlice)) // cap: 10 // append elements mySlice = append(mySlice, 1, 2, 3) mySlice2 := []int{8, 9, 10} mySlice = append(mySlice, mySlice2...) // get data printArray(mySlice) // 0 0 0 0 0 1 2 3 8 9 10 // slice from array newSlice := mySlice[3:] printArray(newSlice) // 0 0 1 2 3 8 9 10 // content copy slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 printArray(slice2) // 1 2 3 slice2 = []int{5, 7, 8, 9} copy(slice1, slice2) // 只会复制slice2的4个元素到slice1的前4个位置 printArray(slice1) // 5 7 8 9 5 }
三、go中的数组是一个值类型
在Go语言中数组是一个值类型(value type)。所有的值类型变量在赋值和作为参数传递时都将产生一次复制动作。如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。
package main import "fmt" func modify(array [5]int) { array[0] = 10 fmt.Println("In modify(), array values: ", array) // In modify(), array values: [10 2 3 4 5] } func main() { array := [5]int{1, 2, 3, 4, 5} modify(array) fmt.Println("In main(), array values: ", array) // In main(), array values: [1 2 3 4 5] }
四、go中的关于循环流程
package main import "fmt" func exampleIf(x int) string { var result string if x == 0 { result = "huhx" } else { result = "LL" } return result } func exampleSwitch(i int) { switch i { case 0: fmt.Print("huhx 0 ") fallthrough case 1: fmt.Print("linux 0 ") case 2: fmt.Print("LL 0 ") default: fmt.Println("tomhu 0 ") } } func exampleFor(x int) int { sum := 0 for i := 0; i < x; i++ { sum += i } return sum } func exampleWhile(x int) int{ sum := 0 for { sum ++ if sum > x { break } } return sum } func exampleGoto(x int) { i := 0 HERE: fmt.Print(i, " ") i ++ if i < x { goto HERE } } func main() { // test if fmt.Println(exampleIf(0)) // huhx // test switch exampleSwitch(0) // huhx 0 linux 0 fmt.Println() // test for fmt.Println(exampleFor(10)) // 45 // test while fmt.Println(exampleWhile(100)) // 101 exampleGoto(10) // 0 1 2 3 4 5 6 7 8 9 }
友情链接
- go中的import的学习:http://www.open-open.com/lib/view/open1384352577352.html
- go学习的一些资源: https://tour.go-zh.org/concurrency/11