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

294 阅读7分钟

Go语言入门指南

Go语言背景

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。自从Go语言由谷歌于2009年11月正式推出,成为开源项目以来,它逐渐成为了软件开发领域中备受关注的编程语言之一。在Go语言的设计中,罗伯特·格瑞史莫(Robert Griesemer)、罗布·派克(Rob Pike)以及肯·汤普逊(Ken Thompson)等资深工程师于2007年开始设计Go,并为其倾注了大量心血。他们的设计理念旨在打造一门简洁、高效、易于学习和使用的语言,以满足现代软件开发的需求。

Go语言常用命令

  1. go run:用于编译并运行Go程序。只需输入go run后跟源代码文件名即可。例如,要运行名为main.go的程序,可以键入go run main.go
  2. go build:用于编译Go程序。该命令将生成一个可执行文件,其名称与源代码文件名相同(除非你指定了不同的输出文件名)。例如,使用go build main.go将编译main.go文件,并生成一个名为main的可执行文件。
  3. go fmt:用于格式化Go代码。通过自动对齐和空格等操作,使代码符合Go语言的官方编码风格。你可以使用go fmt后跟源代码文件名来格式化单个文件,或者使用go fmt后跟包名来格式化整个包。
  4. go generate:用于根据现有文件中的指令生成代码。这可以用于生成代码的辅助工具,如[文档]生成器或测试代码生成器。
  5. go get:用于从互联网上下载或更新指定的代码包及其依赖包。这对于获取第三方库或工具非常有用。例如,要获取一个名为github.com/user/repo的包,可以键入go get github.com/user/repo
  6. go install:用于编译并安装指定的代码包及其依赖包。这将在你的计算机上创建一个可用于其他Go程序的安装包。
  7. go clean:用于删除执行其他命令时产生的一些文件和目录,如编译后的可执行文件和临时文件。
  8. go doc:用于打印附于Go语言程序实体上的文档。你可以通过将程序实体的标识符作为该命令的参数来查看其文档。例如,要查看标准库中fmt包的文档,可以键入go doc fmt
  9. go test:用于对Go语言编写的程序进行测试。你可以使用go test后跟源代码文件名来运行单个测试,或者使用go test后跟包名来运行整个包的测试。
  10. go list:用于列出指定的代码包的信息。这对于查看已安装包的版本和依赖关系非常有用。
  11. go fix:用于将指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。这对于更新旧的代码库到最新Go版本非常有用。
  12. go vet:是一个用于检查Go语言源码中静态错误的简单工具。它可以检测潜在的逻辑错误和其他潜在问题,并提供有关如何修复这些问题的建议。
  13. go tool pprof:用于交互式地访问概要文件的内容。概要文件是收集程序性能数据的工具,而pprof则提供了分析这些数据的工具,帮助[开发者]找出程序的性能瓶颈。
    这些命令提供了从编写、调试到发布Go程序的全面支持,使开发者能够更加高效地使用Go语言进行开发

第一个Go程序

任何语言第一个程序肯定是大家熟悉hello world

package main \\包名

import (
	"fmt"
)\\引入标准库,这里的‘fmt’库用来进行输入输出。

func main() {
	fmt.Println("hello world")
}\\主程序,值得一提'{'不能作为单独一行存在

完成之后我们可以用go run的命令直接执行程序;也可以使用go build来生成一个二进制文件,并使用./的命令执行

标识符

标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(AZ和az)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字,这一点和其他的语言都很相似。

以数字开头或者以关键字及运算符作为标识符是不合法的

常用关键字
breakcasechanconstcontinue
defaultelsedeferfallthroughfor
funcgogo toifimport
interfacemappackagereturnrange
selectstructswitchtypevar

变量与常量

package main

import (
	"fmt"
	"math"
)

func main() {

	var a = "initial"

	var b, c int = 1, 2

	var d = true

	var e float64

	f := float32(e)

	g := a + "foo"
	fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
	fmt.Println(g)                // initialapple

	const s string = "constant"
	const h = 500000000
	const i = 3e20 / h
	fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}

Go通常使用var关键字生成变量;const关键字生成常量;Go语言可以自动判断变量类型。。以上代码便是常见的变量生成,可以直接定义字符串,也可以定义类型,以及布尔值;当然,Go也可以使用:=进行生成,如变量f。 但是在已经声明的变量不可以再次使用:=进行生成。

在不声明初值时,变量默认是0

循环与条件语句

循环

Go语言提供了for循环语句以及嵌套循环,相比C或者C++更简洁

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

		fmt.Println(j)
                
	}

循环语句在条件前提上和其他语言不同,但是也是类似于C语言,可以不用添加括号进行条件,如果添加,编译器也会忽略掉并无影响。

Go也提供了三种控制语句

breakcontinuegoto
中断语句跳出并继续循环跳到指定语句

###条件

条件语句同c语言一样,拥有if elseswitch select语句可用 同循环语句一样,在条件限制方面,可以不使用括号直接进行判断。

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

有一点是switch语句在有满足条件的值时,只会执行对应的case,不会继续向下执行。

但是Go语言不支持三目运算,不能使用?:进行判断运算

常用特性解析

  1. 并发编程

Go 语言内置对并发编程的支持,通过使用 Goroutine 和 Channel 可以轻松实现并发编程。Goroutine 是轻量级的线程,可以独立执行函数或方法。Channel 用于在 Goroutine 之间传递数据,保证数据的安全传输。

  1. 错误处理

Go 语言使用多值返回的方式处理错误,通常最后一个返回值是错误值。通过使用 error 类型和 panic、recover 机制,可以更好地处理错误和异常情况。

  1. 接口和实现

Go 语言中的接口由方法签名组成,一个类型只要实现了某个接口的所有方法,就被认为实现了该接口。通过接口,可以实现多态和组合等设计模式。

  1. 结构体和方法

Go 语言中的结构体是一种自定义类型,可以包含多个字段。结构体可以定义方法,从而实现面向对象的编程风格。方法可以通过接收者来调用,支持值接收者和指针接收者两种方式。

  1. 类型推导

Go语言具有静态类型和类型推导的特性,这使得代码更安全可靠,同时减少了冗余的类型声明。

感谢观看!

gif.gif We work in the dark and serve the lights, we are assassins.