GO语言语法基础| 豆包MarsCode AI 刷题

39 阅读4分钟

1 GO语言结构

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

入门第一招

package main 

import (
    "fmt"
)

func main() {
    fmt.Println("hello world")
}

go build hello.go 生成二进制文件 go run hello,go 运行文件

2 GO基础语法

3 GO语言数据类型

  1. 布尔型 true 和 false
  2. 数字类型 image.png 3.浮点数

image.png 4.其他数字类型

image.png

4 GO语言变量

一般形式如下

var identifier type // 变量类型在后面
var identifier1,identifier2 type //一次申请多个对象

具体例子如下

package main

import "fmt"

func main() {
    var str string = "hello world"
    var a, b int = 1, 2
    fmt.Println(str)
    fmt.Println(a + b)
}

变量声明 1.指定变量类型,如果美欧初始化,则默认为零值 2.根据值自行判定变量类型 3.如果变量有var声明过了,再使用:= 声明变量,就产生编译错误 值类型和引用类型

5 GO语言常量

声明变量前面加个 const

const c_name1, c_name2 = value1, value2

常量可以被用做 枚举

const (
    Unknown = 0
    Female = 1
    Male = 2
)

iota 可以理解为 const 语句的 行索引

package main  
  
import "fmt"  
  
func main() {  
    const (  
            a = iota   //0  
            b          //1  
            c          //2  
            d = "ha"   //独立值,iota += 1  
            e          //"ha"   iota += 1  
            f = 100    //iota +=1  
            g          //100  iota +=1  
            h = iota   //7,恢复计数  
            i          //8  
    )  
    fmt.Println(a,b,c,d,e,f,g,h,i)  
}

6 GO语言预算符 基本跟C++里面的一致

1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.赋值运算符 6.其他运算符

7 GO语言条件语句

if - else - if 语句

package main

import "fmt"

func main() {
    score := 85
    if score >= 90 {
       fmt.Println("优秀")
    } else if score >= 80 {
       fmt.Println("良好")
    } else if score >= 60 {
       fmt.Println("及格")
    } else {
       fmt.Println("不及格")
    }
}

switch 语句

package main

import "fmt"

func main() {
    day := 3
    switch day {
    case 1:
       fmt.Println("星期一")
    case 2:
       fmt.Println("星期二")
    case 3:
       fmt.Println("星期三")
    default:
       fmt.Println("其他")
    }
}

8 Go 语言循环语句

for循环 1.基本的for循环

for i := 0; i < 5;i ++{
    
}

2.无限循环

i := 0
for {
    if i > 5 {
        break
    }
}

3.使用for循环遍历数组或切片

numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
    fmt.Printf("索引 %d 处的值是 %d\n", index, value)
}

9 GO语言函数

格式如下

func function_name( [parameter list] ) [return_types] {
   函数体
}

函数传值跟C语言类似 具有形参 和 实参 的概念

10 语言变量作用域 跟C ++ 一致

全局变量 局部变量

11 GO 语言数组

形式如下

var arrayName [size]dataType

numbers := [5]int{1, 2, 3, 4, 5}//声明并且初始化

12 GO语言指针 跟c++一致

13 GO语言结构体

实例代码如下

type struct_variable_type struct {
   member definition
   member definition
   ...
   member definition
}

variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}

具体代码例子

package main

import "fmt"

//定义
type student struct {
    id   int64
    name string
}

func main() {
    //俩种初始化方式
    var a = student{1, "a"} 
    b := student{id: 1, name: "知行Yi"}

    a.name = "Jun不见"//支持点的形式访问变量
    fmt.Println(a)
    fmt.Println(b)
}

14 GO语言切片 类似于 动态数组 vector

定义切片

package main

import "fmt"

// 定义
type student struct {
    id   int64
    name string
}

func main() {
    //定义切片的几种方法
    var vector2 []int = make([]int, 5)
    vector3 := make([]int, 5)

    for i := range vector2 {
       fmt.Print(i)
    }
    for i := range vector3 {
       fmt.Print(i)
    }
    fmt.Println()
    //切片初始化
    //s :=make([]int,len,cap)
    s := make([]int, 3, 5)
    fmt.Println(len(s), cap(s))

    var c = s[:1] //截取0 - 1
    fmt.Println(len(c))
    var d = s[1:] //截取1 - 末尾
    fmt.Println(len(d))
}

15 GO语言范围(Range)

GO语言中的Range关键字用于for循环中迭代数组,切片,通道或集合的元素。在元素和切片中它返回元素的索引和索引对应的值,在集合中返回key-value对 代码如下

package main

import "fmt"

// 定义
type student struct {
    id   int64
    name string
}

func main() {
    //通道
    ch := make(chan int, 2)
    ch <- 1
    ch <- 2

    close(ch) //关闭通道
    for i := range ch {
       fmt.Println(i)
    }

    //忽略索引
    num := []int{2, 3, 4}
    for _, i := range num {
       fmt.Println(i)
    }

    //忽略值
    for i := range num {
       fmt.Println(i)
    }

}

16 GO语言Map集合(跟c++ 差不多)

17 GO语言递归(跟c++ 差不多)

18 Go 语言类型转换

直接看实例

package main

import (
    "fmt"
    "strconv"
)

// 定义
type student struct {
    id   int64
    name string
}

func main() {
    //type_name(expression)
    var a int = 10
    var b float64 = float64(a)

    fmt.Println(b)
    // 字符串类型转换
    str := "123"
    num, err := strconv.Atoi(str)
    if err != nil {
       fmt.Println("类型转换错误", err)
    } else {
       fmt.Printf("字符串 ‘%s’ 转换为整数 ‘%d", str, num)
    }
    
}

19 Go 语言接口

20 GO 错误处理

21 GO 并发