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

52 阅读3分钟

今天第一次接触了go语言,给我的感觉是既有c语言的影子,也有python的影子。接下来分享学习中遇到的疑问与自己对go的初步理解。

变量与常量

学习每个语言的开始都是从变量和常量开始的,但经过学习后,我发现go中的变量和其他语言的变量常量的定义还是有很多不同的
首先go中的变量使用var定义这和javascript有点相似接下来是实操与运行结果,同时变量可以使用(:=)来直接定义而不需要使用var
常量的话就是把var改为const,但go中的常量没有确定的类型,会根据上下文来确定其类型。

package main

import "fmt"

func main() {
   var a = "chu"
   fmt.Println(a)
   var b, c = 1, 2
   fmt.Println(b, c)
   //可以前面不适用var而使用:=来定义变量
   d := 6
   fmt.Println(d)
   const s = "abc"
   fmt.Println(s)
}

if else语句

go里面的if else语句和c,c++中的if else语句类似不同点就是go中if后面的条件语句不使用(),另外一点就是if后面的语句必须使用{}括起来.

go中的循环

golang中的循环语句只有for循环,后面如果没有循环条件,就会是一个死循环,也可以向c/c++那样,这点理解直接略过。

switch语句

go中的switch语句后面同样直接跟变量,与其他语言不同的一点是,go中case语句后面不用加break语句,执行完对应case语句直接跳出,而其他语句中,如果没有break就会执行完下面的case语句。

数组

练习代码

package main

import "fmt"

func main() {
   var a [5]int
   a[4] = 100
   fmt.Println(a, len(a))

   b := [4]int{1, 2, 3, 4}
   fmt.Println(b, len(b))

   var c [2][3]int
   for i := 0; i < 2; i++ {
      for j := 0; j < 3; j++ {
         c[i][j] = i + j
      }
   }
   fmt.Println(c)
}

运行结果

image.png

切片

基本使用语法

package main

import "fmt"

func main() {
   a := make([]int, 5)
   a[4] = 1
   fmt.Println(a)

   //使用append追加
   a = append(a, 1, 2)
   fmt.Println(a)

   b := make([]int, len(a))
   copy(b, a)
   fmt.Println("b: ", b)

   //切片前闭后开
   fmt.Println(b[1:2])
}

运行结果

image.png

map

在Go中可以使用make来创建一个map,GO中的map是完全无序的,遍历的时候完全无序。
也可以不使用make,而是通过map[string]int{"first": 1, "second": 2}直接给map赋值 基本使用语法

package main

import (
   "fmt"
)

func main() {
   m := make(map[string]int)
   m["one"] = 1
   m["two"] = 2
   fmt.Println(m)

   // 获取键值对
   //v1 := m["apple"]
   //v2, ok := m["pear"]  // 如果键不存在,ok 的值为 false,v2 的值为该类型的零值
   a, ok := m["u"]
   fmt.Println(a, ok)

   delete(m, "two")
   fmt.Println(m)

   n := map[string]int{"first": 1, "second": 2}
   fmt.Println(n)

}

运行结果

image.png

函数

Go中的函数与其他语言最大的不同就是go中的方法后面需要指定返回值类型,并且go中的参数类型是后置的。 练习代码

package main

import "fmt"

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

func exists(m map[string]string, k string) (v string, ok bool) {
   //如果键值k有对应的value,那么v为对应的value,否则v=0,ok为false
   v, ok = m[k]
   return v, ok
}

func main() {
   sum := add(1, 2)
   fmt.Println(sum)
   fmt.Println(exists(map[string]string{"pig": "Pig"}, "pig"))
}

运行结果

image.png 这就是go的部分基础语法学习,学习下来,go给我的感觉就是代码很轻盈,功能又很强大,激发了我想用它开始实践的想法。打卡第一天加油!!!