Go语言入门-学习巩固 | 青训营笔记

54 阅读5分钟

这是我参与「第五届青训营 」笔记创作活动的第4天

这篇文章主要是对第一阶段学习Go语言知识的巩固和课后思考。

1.Go语言基础入门

对于Go语言的初学者来说,学习Go语言需要从Go语言的基础知识进行学习,其基础语法主要有:变量、if else、switch、数组、切片、map、range、函数、指针、结构体等。

下面将主要对几个主要的基础语法进行实例展示,同时提出自己的一些想法。

1.1 基础语法-变量

package main

import (
    "fmt"
    "math"
)

func main() {

   var a = "initial"

   var b,c int = 1,2

   var d = true 

   var e float64

   f := float32(e)

   g := a + "foo"
   fmt.Println(a,b,c,d,e,f) // initial 1 2 true 0 0
                            // initialapple
   const s string = "constant" //const定义的固定常量
   const h = 50000000
   const i = 3e20 / h
   fmt.Println(s,h,i,math.Sin(h), math.Sin(i))

}
复制代码

上述的变量主要分为定义的变量,给予其一个特定的值,其中需要注意的是const为定义的固定常量。

1.2 基础语法-if else

package main

import "fmt"  //导入包的语句为import

func main() {
 
   if 7%2 == 0 {
       fmt.Println("7 is even")
   } else {
       fmt.Println("7 is odd")
   } //if,else循环语句
   
   if 8%4 == 0 {
       fmt.Println("8 is divisible by 4")
   } //if语句
   
   if num := 9; num < 0 {
       fmt.Println(num, "is negative")
   } else if num < 10 {
       fmt.Println(num, "has 1 digit")
   } else {
       fmt.Println(num, "has multiple digits")
   } 
} // 两个嵌套的if...else语句
复制代码

对于简单的循环语句if else,这里分为三个类型,分别为:if,else循环语句、简单的if语句和两个嵌套的if...else语句。

1.3 基础语法-switch

package main

import (
    "fmt"
    "time"
)

func main(){
  
   a := 2 //定义的符号:=为赋值符号
   switch a {
   case 1:
       fmt.Println("one")
   case 2:
       fmt.Println("two")
   case 3:
       fmt.Println("three")
   case 4,5:
       fmt.Println("four or five")
   default:
       fmt.Println("other")
   }
   
   t := time.Now()
   switch{
   case t.Hour() < 12:
       fmt.Println("It's before noon")
   default:
       fmt.Println("It's after noon")
   }
}
复制代码

对于switch语句,为了更加方便读者理解,这边通过C语言中的switch语句进行介绍:

switch语句是开关语句,一般与case、break、default配合使用,对流程进行控制。

在一个switch中可以有任意数量的case语句。每个case语句后跟一个要比较的值和一个冒号。

case后的类型必须与switch中的变量具有相同的数据类型,且必须是一个常量或字面量。

当被测试的变量等于case中的常量时,case后跟的语句将被执行,直到遇到break语句为止。

当遇到break语句时,switch终止,控制流将跳转到switch语句后的下一行。

不是每一个case都需要包含break。如果case语句不包含break,控制流将会继续后续的case,直到遇到break为止。

一个switch语句可以有一个可选的default,出现在switch的结尾。default case可用于在上面所有case都不为真时执行一个任务。default case中的break语句不是必须的。

1.4 数组

package main

import "fmt"

func main() {
 
    var a [5]int
    a[4] = 100
    fmt.Println(a[4],len(a))
    
    b := [5]int{1,2,3,4,5}
    fmt.Println(b)
    
    var twoD [2][3]int
    for i := 0; i < 2; i++ {
        for j := 0;j < 3;j++ {
            twoD[i][j] = i + j
        }
     }
     fmt.Println("2d: ", twoD)
}
复制代码

由于在学习这节课过程中,自己对数组的知识有些遗忘,为了更好的巩固,我通过查阅资料进行了重新学习,数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,因此,数组在Go语言中比较少用。

数组变量名:数组声明及使用时的变量名。

元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有运行时才能确认大小的数值。

1.5 基础语法-切片

package main

import "fmt"

func main() {

    s := make([]string, 3)
    s[0] = "a"
    s[1] = "b"
    s[2] = "c"
    fmt.Println("get:", s[2])  // c
    fmt.Println("len:",len(s)) // 3
    
    s = append(s, "d")
    s = append(s, "e", "f")
    fmt.Println(s) // [a b c d e f]
    
    c := make([]string, len(s))
    copy(c, s)
    fmt.Println(c) // [a b c d e]
    
    fmt.Println(s[2:5]) // [c d e]
    fmt.Println(s[:5])  // [a b c d e]
    fmt.Println(s[2:])  // [c d e f]
    
    good := []string{"g", "o" , "o" , "d"}
    fmt.Println(good) // [g o o d]
}
复制代码

对于切片,切片是对数组的一个连续片段的引用,所以切片是一个引用类型,这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。

Go语言中切片的内部结构包含地址、大小和容量,切片一般用于快速地操作一块数据集合。

2.Go语言安装

这节主要介绍一些注意事项:

  • 安装Go语言时候,文件名称不可以使用中文
  • 运行Go语言时候,需要将Go语言进行配置,特别是环境要配置好,需要熟悉Go语言代码的使用

总结

在经过三天的课程学习后,我深刻的感受到了作为一名码农,需要注意的细节比较多,我们不仅仅要注重课堂的学习,同时要加强课后的巩固和练习。代码的应用也特别重要,很多时候仅仅了解理论知识是不够的,需要亲自动手写,不断在错误中改正,才能提高代码的能力!

引用

本篇文章主要来自于字节内部课的相关内容,以及百度查阅的资料。