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

32 阅读3分钟

变量的声明

方式一:

例:var a = "initial"

通过这种方式,会自动推导变量类型

也可以显式给出变量类型

例:var b,c int = 1,2

方式二:

例:i := 1

if

if后面的条件不需要加括号,但是对应的代码块必须用大括号{}包裹

循环

和C++、Java不同,Go语言里面只有for循环

方式一(无限循环):

for {
     fmt.Println("loop")
     break;
}

方式二:C语言风格

for j := 7; j < 9; j++ {
    fmt.Println(j)
}

其中的初始化语句j := 7、条件判断语句j < 9、条件控制语句j++三项都可以省略

switch

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

不同于C/C++,这里执行完a对应的case分支就会跳出switch,无需额外加break来达到目的

相比C/C++,功能更加强大,case后面可以加字符串、结构体

switch后面可以不加任何变量,而在case分支实现类似于if-else的条件判断

t := time.Now()
switch {
    case t.Hour() < 12:
        fmt.Println("It's before noon")
    default:
        fmt.Println("It's after noon")
}

数组

数组的声明

方式一:var a [5]int

二维数组:var twoD [2][3]int

方式二:b := [5]int{1, 2, 3, 4, 5}

切片

切片是一个可变长度的数组

切片的声明

方式一:s := make([]string, 3)

方式二:good := []string{"g", "o", "o", "d"}

切片也能像一般的数组那样赋值:

s[0] = "a"

可以用len函数获取切片长度:

fmt.Println("len:", len(s))

用append函数往切片里添加元素:

s = append(s, "d")

用copy函数拷贝切片:

c := make([]string, len(s))

copy(c, s)

可以取切片指定位置的元素:

fmt.Println(s[2:5])

map

声明方式:

m := make(map[string]int)

m2 := map[string]int{"one": 1, "two": 2}

var m3 = map[string]int{"one": 1, "two": 2}

在这里,key的类型为string,value的类型为int

map可以像数组那样赋值,这里的数组下标就是map的key,数组下标对应的值就是map的value

map是无序的,不会按照字母顺序/插入顺序来遍历

range

range遍历的时候,会返回两个值

对于数组,第一个值是索引,第二个值是对应位置的值,如果不需要索引的话,可以用_来忽略

对于map,第一个值是key,第二个值是value

函数

在函数的参数里,依然延续了Go的语法特点:变量类型是后置的

Go的函数原生支持返回多个值

指针

相比C/C++,支持的操作非常有限,Go指针的主要用途是在函数里对传入的参数进行修改

结构体

定义方式:

type user struct {
    name string
    password string
}

初始化:

a := user{name: "wang", password: "1234"}
b := user{"wang", "1024"}
c := user{name: "wang"}

没有初始化的字段,对应的值为空值

使用结构体指针作为函数的参数,既能对指针指向的结构体进行修改,又能在某些情况下避免大结构体拷贝带来的开销

结构体方法

类似于其它语言的类成员函数

字符串操作

Go语言提供了一系列的字符串操作函数,如:

Contains:判断一个字符串是否包含参数中指定的字符串

Count:判断一个字符串里包含了多少个参数中指定的字符串

Index:查找参数中指定的字符串首次出现在源字符串的哪个位置

Join:用指定字符串将多个字符串连接起来

Repeat:将某个字符串重复拼接