GO语言基础语法 | 青训营笔记

76 阅读2分钟
package main  
  
import (  
"fmt"  
"strconv"  
)  
  
func add() func(int) int {  
    n := 0  
    return func(a int) int {  
    n += a  
    return n  
    }  
}  
  
func main() {  
    fun := add()  
    fmt.Println(fun(1))  
    fmt.Println(fun(2))  
    fmt.Println(fun(3))  
    str2 := "hello和"  
    r := []rune(str2)  
    //for i := 0; i < len(r); i++ {  
    // fmt.Printf("%c", r[i])  
    //}  

    for _, v := range r {  
    fmt.Printf("%c", v)  
    }  

    fmt.Println(strconv.Atoi("1"))  
    defer func() {  
    if err := recover(); err != nil {  
    fmt.Println("error")  
    }  
    }()  

    //slice := make([]int, 3)  
    //var slice = make([]int, 4)  
    aaa := [3]int{111, 12, 2}  
    lc := aaa[0:3]  
    fmt.Printf("%p %p\n", &lc[0], &aaa[0])  
    lc = append(lc, 1)  
    fmt.Printf("%p %p\n", &lc[0], &aaa[0])  

    fmt.Print(lc)  
    aaa[0] = 333  
    fmt.Print(lc)  

    //slice = append(slice, ...)  
    //slice = append(slice, 46)  
    //slice[5] = 222  
    //fmt.Print(slice)  
    fmt.Print(aaa)  
}

今天学习了一下go的基本语法,上面是我的学习记录,在学习的过程中,我快速的过了一遍go的基本语法操作如for switch if ,知道了for range的使用方式,它十分适合用来遍历数组以及map等数据结构

在学习的过程中,我知道了它与其他语言在语法上不同的一些区别,如在go里面没有 while 循环、do while 循环,只有唯一的一种 for 循环。最简单的 for 循环就是在 for 后面什么都不写,代表一个死循环。循环途中你可以用 break 跳出。然后是if语句,if 后面没有括号,这与其他语言并不相同。

数组

数组是一个具有编号且是固定长度的一个元素序列,使用起来并没有特别的方便,因为要自己初始化固定的长度如果越界是会爆error

切片

切片就不同于数组,它并不需要一个明确的长度来进行初始化然后也有更多丰富的操作。比如说我们可以用 make 来创建一个切片,可以像数组一样去取值,使用 append 来追加元素。但是进行append扩容操作的时候,需要自己讲返回的新切片接收。

map

map这个数据类型就是一个key value 的键值对,它能分别键值对进行操作,同时是无法重复key的, 我们可以从里面去存储或者取出键值对。也可以用 delete 从里面删除键值对,golang的map是完全无序的,遍历的时候不会按照字母顺序,也不会按照插入顺序输出,而是随机顺序。

函数

func funname() returnName {  
  
}

函数的基本格式如上述所示,还是较好理解的。Golang 里面的函数原生支持返回多个值。在实际的业务逻辑代码里面几乎所有的函数都返回两个值,第一个是真正的返回结果,第二个值是一个错误信息。