Go语言入门指南 | 青训营

76 阅读4分钟

Go语言是一种开源的、通用的编程语言,它的设计目标是提供一种简单、高效的编程方式。

优点:

  1. 高性能、高并发

  2. 语法简单、学习曲线平缓

  3. 丰富的标准库

  4. 完善的工具链

  5. 静态链接

  6. 快速编译

  7. 跨平台

  8. 垃圾回收

    从经典的"Hello World"程序开始。创建一个名为main.go的文件,然后输入以下代码:

    package main

    import "fmt"

    func main() { fmt.Println("Hello, Go!") }

    在终端中,使用go run命令运行该程序。将会看到输出结果:"Hello, Go!"。

第一行代码:代表此文件属于main包的一部分,即为程序的入口包(入口文件)

第三行:导入标准库中的fmt包,向屏幕输入输出字符串,格式化字符串

Go语言有许多基本的数据类型,如整数、浮点数、字符串和布尔值。可以使用var关键字声明变量,并通过赋值操作给变量赋予初始值。Go语言支持基本数据类型,如整型、浮点型、字符串和布尔型。变量也可以通过显式指定类型或由编译器自动推断类型。

变量声明的几种方式:

自动推导变量类型——var a=“initial”

var b,c int = 1,2

f := float32(e)

常量只需要把var改为const。

golang中没有确定的常量类型,一般根据上下文自动确定类型。

if语句没有大括号,不能写在同一行。

package main

import "fmt"

func main() { age := 20

if age >= 18 { fmt.Println("You are an adult.")}else i fmt.Println(""You are a minor.") } }

golang中只有for循环类型

package main

import "fmt"

func main() { for i := 1; i <= 5; i++ { fmt.Println(i) } }

Switchcase语句没有break也不会去跑其他的分支,变量类型更多样,可以是字符串、结构体,甚至可以取代任意的ifelse语句

切片是Go语言中重要的数据结构之一,它提供了对数组的动态扩展和操作的能力。切片是一个可变长度的数组,可以任意时刻更改长度,增加了自动扩容功能。通过使用切片,我们可以方便地对数组进行增加、删除和修改等操作。

切片是引用类型,可以使用make函数来创造切片。

切片初始化举例:var s1=[ ]int{1,2,3}

可以使用if条件语句、for循环和switch语句来控制程序的流程。

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

使用数组进行初始化:var a2=[...]int{1,2,3,4} 根据数组实际长度确定数组元素个数

Go语言中,可以使用func关键字来定义函数。一个函数可以接受零个或多个参数,并可以返回一个或多个值。例如:

package main

import "fmt"

func add(a, b int) int { return a + b }

func main() { result := add(3, 6) fmt.Println("The sum is", result) }

map是一种用于存储键值对的数据结构,类似于其他编程语言中的关联数组或字典。映射可以通过键来访问对应的值,同时也可以方便地增加、删除和修改键值对。

结构体是一种自定义的复合类型,它可以由多个不同类型的字段组成。结构体可以用于表示现实世界中的实体,如用户、商品等。我们可以通过结构体来创建自定义的数据类型,并在程序中使用。

指针是一种存储变量内存地址的数据类型。通过指针,我们可以间接地访问和修改变量的值。在Go语言中,指针使用 *表示。

Go语言通过包(package)来实现模块化编程。可将相关的代码放到一个包中,并使用该包提供的功能。例如,在上面的例子中,使用了fmt包来实现输出功能。

Go语言天生支持并发编程,通过goroutine和channel可以轻松实现并发的任务处理。使用关键字go可以启动一个独立的goroutine,而channel用于不同goroutine之间的通信。