Go 语言入门指南:基础语法和常用特性解析1 | 豆包MarsCode AI刷题

50 阅读3分钟

0Go开发注意事项

1. Go源文件以.go为扩展名

2. Go应用程序的执行入口是main()方法

3. Go语言严格区分大小写

4. Go方法由语句构成,每个语句后可以不加分号(Go语言会在每行后自动添加)

5. Go编译器是逐行翻译的。因此,不能将多条语句写在同一行

6. Go语言定义的变量或import的包如果没有用到,编译就不能通过  

1Go基础知识

1.1变量

Go语言中变量的声明有以下形式:

·var 变量名 数据类型

eg.

    var i int
    i = 1 //若声明后不赋值,使用默认值

·var 变量名 = 值

eg.

    var i = 1

·变量名 := 值

eg.

    i := 1

 

1.1.1常量

使用const修饰的变量称为常量

eg.

    const c int = 1
    const c = 1

·常量必须在声明时即赋值,赋值后不能更改;

·常量只能修饰bool、数值类型、string类型

·在 Go 语言中,不要求常量首字母大写。首字母的大小写是决定标识符的访问范围。

1.2数据类型

1.2.1基本数据类型

·数值型

·整数类型(默认值是0)

·(有符号整数)int,int8,int16,int32,int64

·(无符号整数)uint,uint8,uint16,uint32,uint64

·rune

·byte

·浮点类型(默认值是0)

·float32,float64

·字符型

Go没有专门的字符型,使用byte保存单个字符

·布尔类型(默认值是false)

布尔类型只允许取 true 或 false

·bool

·字符串(默认值是空串””)

·string

2种表示形式

·“双引号包含字符串”

此时会识别转义字符

·’反引号包含字符串’

此时将以字符串的原生形式输出,包含换行和特殊字符

1.2.2复杂数据类型

·指针(Pointer)

·数组

·结构体(struct)

·管道(Channel)

·函数

·切片(slice)

·接口(interface)

·map

2程序流程控制

2.1if

·if

eg.

    if 8%4 == 0 {

        fmt.Println("8 is divisible by 4")

    }

在Go中,条件表达式不能加括号,且语句块即使只有一句也必须加上大括号

·if...else

eg.

    if 7%2 == 0 {

        fmt.Println("7 is even")

    } else {

        fmt.Println("7 is odd")

    }

在Go中,不能让else语句另起一行

·if...else if

eg.

    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")

    }

 

2.2switch

eg. 

    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")

    }

·case后可以是一个表达式(常量、变量、有返回值的函数)

·case后不需要加break

·switch后面可以不带表达式,此时case表达式数据类型是bool。类似于多个 if...else分支使用

eg.

    t := time.Now()

    switch {

    case t.Hour() < 12:

        fmt.Println("It's before noon")

    default:

        fmt.Println("It's after noon")

    }

2.3for

·for 循环变量初始化; 循环条件; 循环变量迭代 {

  ...

}

eg.  

    for j := 7; j < 9; j++ {

        fmt.Println(j)

    }

·for-range

GoLang提供for-range方式遍历字符串和数组

eg.

    var str string = "abcdefg"

    for index, val := range str { // index 即下标,val 即值。使用 _ 忽略其中的一个

        fmt.Printf("%d\t%c\n", index, val)
    
    }

 

2.4break

用于中止一个语句块的执行。用于中断当前for循环或跳出swiitch语句

·break默认跳出最近的循环

·break语句出现在多层嵌套语句块中时,能通过标签指明要终止哪里一层语句块

eg.

    lable1: // 标签

    for{

        for{

            if ... {

                break lable1

            } else{
    
                break

            }

        }

    }

2.5continue

在循环中出现。用于结束本次循环,继续下一次循环

·continue默认跳过最近的循环

·continue语句出现在多层嵌套语句块中时,能通过标签指明要跳过哪一层循环