首页 > 代码库 > Go基础---->go的基础学习(一)

Go基础---->go的基础学习(一)

  这里面记录一些学习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基础---->go的基础学习(一)