Go语言基础语法| 青训营

93 阅读3分钟

走进Go语言基础语法

什么是Go语言

Go语言是一种有着高性能、高并发、语法简单、丰富的标准库、完善的工具链、静态链接、快速编译、跨平台垃圾回收等特性,十分强大高效的编程语言。

开发环境-配置集成开发环境

笔者根据“成就一亿技术人”的CSDN上面一篇文章# golang环境详细安装、配置来在vscode上配置的,因为个人比较喜欢用vscode方便一点。

但是可能有些人环境不好配置,我觉得用GoLand应该也是可以的,学生认证还能免费使用多香。

整体来说感觉比C++配置好配置一点(个人感觉)

基础语法

Hello World

计算机人逃离不开的应该就是Hello World了吧,所有上来都是先来一个Hello World,虽然不懂为什么hhh

package main表示这是程序的main包。import “fmt”导入了"fmt"这个包,主要用来往屏幕输入和输出文本,就有点像C++iostream,不知道能不能这样理解func main()就是程序的入口fmt.Println()用来打印文本。

package main

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

变量声明

变量声明有两种形式。

第一种使用var关键词定义,如果在声明变量时进行了显式赋值,那么变量的类型可以被省略。如果没有对声明变量赋值,那么必须显式声明变量的类型。

第二种使用:=来进行变量声明。下面代码块中给出了详细例子。

var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
f := float32(e)
g := a + "foo"
const s string = "constant"
const h = 50000000
const i = 3e20 / h

if else

Go中的if else语句与C++中还是比较类似的,不同点在于其if后的条件不需要加括号,在条件后面必须紧跟大括号再换行,对于一个新接触Go的小白来说还需要适应一下,因为笔者喜欢换行再打大括号。

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

循环

Go中的循环就比较单调了,只有一个for循环。for循环后可以不写条件,这样就是一个死循环,内部可用continuebreak。注意的是,for循环后条件也没有括号,直接跟条件或大括号。

for{
    fmt.println("loop")
    break
}
for j := 7; j < 9; j++{
    fmt.Println(j)
}
for n:=0; n<5; n++{
    if n%2 == 0{
        continue
    }
    fmt.Println(n)
}

switch

Go 语言中的 switch 分支结构也与C++类似,同样的在 switch 后面的变量名不需要加括号。但是,与C++不同的是,Go语言是不需要break来退出的,不像C++中一定要碰到break才退出,不如就会把所有case都跑完,Go中是找到符合条件就退出了

a := 2
switch a {
    case 1:
    fmt.Println("one")
    case 2:
    fmt.Println("two")
    case 3, 4:
    fmt.Println("three or four")
    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")
}

数组

数组是一种固定大小,存储相同类型元素的集合。对于一个数组,可以很方便的通过索引存取值。这里除了定义数组时有所不同,使用时是基本一样的。

var a [5]int
a[4] = 100
fmt.Println(a[4], len(a))

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

其他的内容,包括切片、map、range、函数、指针、结构体、结构体方法、错误处理、字符串还没来得及整理,也可以说是一时间学不明白,分另一篇来讲吧。

总结

对我来说,还是不太习惯Go的表达方式,也许就是还没上手实操吧,都已经一周的时间了,才写了第一篇笔记,拖延症还是太厉害了,明天再搓一篇基础语法就是我上面说的部分吧,也要开始弄一下那个两篇实践了,大项目不做,这个也还是要好好完成的。