Go语言基础 |青训营笔记

104 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

下面是我对Go语言基本的特性和语法的总结

1. go语言特性

高性能,高并发。拥有丰富标准库,静态连接。跨平台,垃圾回收

2. Go声明变量语句 (显式声明,隐式声明)

  • var a = "intial" 这里面是一个隐式变量声明,会根据后面所写的初始值来赋予变量类型
  • var b,c int = 1,2 这里面是显示变量声明,在声明的时候已经表示是int类型

3. If语句

这里面与java的区别是条件句没有括号,而statement中必须有大括号。

见下面例子:

   if 7%2 == 0 {
        fmt.Println("7 is even")
   }else{
        fmt.Println("7 is odd")
   }

4. For循环

  • 死循环: for{ statement xxx}
  • 常用的循环: for j:=7; j<9; j++ { fmt.Println(j)} 这里面我们和java类似可以使用continuebreak去改变循环的进行方式

5. switch (与C语言不同 不需要加break)

   swtich a{
     case 1:
     fmt.Println(xxx);
     case 2:
     fmt.Println(xxx);
  }

这里我们需要注意两点:1. switch 其中的a适用于任意类型 2. switch可以替代if else

6. 数组和切片

  • 数组:

    var a [5] int

    a[4] = 100

  • 切片(可变数组,非常常用):

   s := make([]string,3)
   s[0] = "a"
   s[1] = "b"
   s[2] = "c"
   s = append(s,"d","f")
   c := make([]string, len(s))
   copy(c,s)
   fmt.Println(s[2:5])

利用make去声明一个切片,后面可以用append去添加后续的成员。

7. Map

m := make(map[string] int)

string 代表了key的类型, int 代表了value的类型:举例说明:m["one"]=1

8. 利用range遍历slice或map

数组会返回两个值:索引和对应值

举例说明:

   for k, v := range m {
          fmt.Println(k,v)
   }

9. 函数

我们需要注意类型要后置!

    func add(a int, b int) int{
        return a+b
    }

第三个int是返回值类型

10. 指针

  func add2ptr( n *int){
      *n += 2
  }
  func main(){
      n := 5
      add2ptr(&n)   
  }

11.结构体

   type user struct{
        name string
        password string
   }

两种赋值方法:

  • a := user{name:"wang",password:"1024"}
  • var b user b.name="wang" b.password="1024"

12.JSON操作(把结构体转为数组)

buf, err := json.Marshal(a)

buf输出为一个数组,a为结构体一个样例

(除了结构体可以转为数组,数组也可以转为结构体)


除了上述总结的12个知识点,还有时间处理,数字解析和进程信息知识点,这几个知识点需要运用的时候看一下书就可以很好地运用。