Go语言入门 | 豆包MarsCode AI刷题

70 阅读3分钟

我个人感觉Go语言就是汲取各个编程语言的优点糅合而成,例如它和python一样不需要在行尾写分号,但是又有C++中的花括号来控制语句层次,对掌握好几种编程语言的人来说入门Go语言很快,对初学者也很友好

Hello World

` //包名
package main

//引入Go语言标准库
import (
        "fmt"//包含控制输出的语句
)

//函数
func main() {
        fmt.Println("hello world")
}  `

在 Go 语言中,每个 Go 程序文件都必须属于一个包。

包是 Go 语言组织代码的方式,它有助于代码的模块化、可维护性和可重用性。

一个 Go 程序最少包含一个包声明,一般是package main用于可执行程序,或者其他名称用于库包。

标准库

和其他语言类似,Go中也有官方提供的标准库,格式类似以下(有点像Java)

`import (
        "time"//包含本地时间等api
        "fmt"//包含输出相关的函数
        ......
)`

变量声明

Go语言支持var语言自动推导类型,也可以自己定义类型,形式多样,一般情况下直接用var即可 `

//var关键字自动推导变量卡类型
var a = "initial" 

// var +变量名 +变量类型 的形式
var b, c int = 1, 2

// var + 变量名 + 变量类型
var e float64

// 变量名 := 变量值
f := float32(e)

//字符串类型可以通过+拼接
g := a + "foo"`
    

循环

Go中的循环只有for一种,并没有while,for循环的格式跟C++很类似,区别就是for后的控制语句不需要加括号,如下

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

for后面可以不加控制语句,代表这是一个无限循环,当然可以用break跳出,也有continue等控制语句

	for {
		fmt.Println("这是一个无限循环")
        break
	}

if判断

if判断语句和C++的也很类似,唯一区别就是 if后面的判断语句不需要加括号,和for循环一样,都是把C++中有括号的地方给去掉了

	if 7%2 == 0 {
		fmt.Println("7 is even")
	} else {
		fmt.Println("7 is odd")
	}

switch

跟if和for循环一样,形式上也是把后面的括号给去掉了,还有一个区别就是Go语言中的switch匹配到对应的case并执行完对应的语句后不会进入下一个case而是直接退出,这就不需要我们在每个case后面加break了,我觉得这是一个很好的改进

	a := 2
	switch a {
	case 1:
		fmt.Println("one")
	case 2:
		fmt.Println("two")
        //执行完case 中的代码后直接退出switch,不会进入下一个case
	case 3:
		fmt.Println("three")
	case 4, 5:
		fmt.Println("four or five")
	default:
		fmt.Println("other")
	}

当然和其他语言的一大区别是:switch后可以不写值,作用类似 if else,就像下面这样

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

数组

数组定义和变量类似,都可以先声明在赋值,或者定义的时候就初始化,在Go中可以直接通过关键字 len(数组名)的方式获取数组的长度

	//先声明,后赋值
    var a [5]int
	a[4] = 100
    
    //直接通过变量名访问其中的变量
	fmt.Println("get:", a[2])
    //获取数组a的长度
	fmt.Println("len:", len(a))
    
    //声明并初始化
	b := [5]int{1, 2, 3, 4, 5}

————————————————