Golang Go语言开源入门教程,希望对转Golang的兄弟有帮助

发布于 1周前 作者 songsunli 来自 Go语言

项目地址: https://github.com/Zhouchaowen/golang-tutorial

节选一部分

Go 中,一个包(Package)是一组相关的代码文件的集合,编写代码时我们通常将相同模块的代码划分到一个Package中以便于重用和维护。每个 Go 程序都至少包含一个包,即 main 包,其中的 main 函数作为程序的入口点。我们首先来看第一个示例。

目录

  • 入门
  • 导入标准库
  • 导出函数与属性

入门

golang中每个可以独立运行的 go 文件都至少包含三部分package main, import, func main()

package main // 定义了包名,只有定义了 main 的包才能独立运行

// 导入: 标准库和第三方库 import ( “fmt” // 引入一个标准库包 )

// main 函数,程序的入口 func main() { // 调用标准库 fmt 在控制台打印 hello world 字符串 fmt.Println(“hello world”) }

// 通过命令行运行 // go run main.go // go build main.go && ./main

如代码中package main表示当前代码隶属于main包。main包是一个特殊的包,我们的启动函数func main()必须要定义在package main下才能执行。

import()表示要导入标准库(也可以叫做导入一个包)或第三方包, 在实际开发者会引用许多标准库和第三方包来简化业务开发。这里我们导入一个fmt的标准库,这个标准库定义了一些函数在控制台输出一些信息,如Println()函数。

func main()函数是程序入口。我们可以通过这个函数来运行我们编写的代码,我们在func main()函数中调用fmt标准库的Println()函数在控制台打印一个字串hello world

导入标准库

上一个Demo简单介绍了import(), 这一节我们详细介绍import()import()函数用来导入标准库和第三方库,只有通过import()导入的标准库和第三方库我们才能在当前package下调用并且只能调用该package下已经导出的属性和函数。

package main

// 导入: 标准库和第三方库 import ( “fmt” “math/rand” // 导入 rand 库 )

// main 函数,程序的入口。 func main() { // 调用标准库 fmt 在控制台打印 hello world 字符串 // rand.Intn(10) 函数返回一个取值范围在[0,n)的伪随机 int 值,如果 n<=0 会 panic 。 fmt.Println(“hello world”, rand.Intn(10)) }

其中 math/rand 是要导入的包的名称。一旦导入,就可以使用该包中导出的函数、变量和其他标识符,其中在func main()函数中调用标准库(math/rand)的rand.Intn(n)函数获取一个[0,n)的伪随机int值.

导出函数、变量、常量和类型

golang语言中想调用其它包的函数、变量、常量和类型需要被调用函数、变量、常量和类型是导出的(在同一包下不导出也可以使用), 导出一个函数、变量、常量和类型非常简单, 只需首字母大写就代表该函数或变量导出。这是一种访问控制机制,用于确保只有您希望外部使用的标识符才能公开。

math包如下(省略一些信息和注释方便查看)

package math

// Integer limit values. const ( intSize = 32 << (^uint(0) >> 63) // 32 or 64 // 未导出, 其余 package 不能调用

MaxInt    = 1&lt;&lt;(intSize-1) - 1 // 导出, 其余 package 能调用
MinInt    = -1 &lt;&lt; (intSize - 1)

… )

由于 MaxIntMinInt 的名称以大写字母开头,因此它们可以被导出到 math 的外部使用。如果您在另一个包中导入了 math,则可以使用以下代码访问MaxInt

package main

// 导入: 标准库和第三方库 import ( “fmt” “math” )

// main 函数,程序的入口。 func main() { // 注意:在导入一个包时,你只能引用其中已导出的名字。任何“未导出”的名字在该包外均无法访问

// 什么是导出?首字母大写代表导出,小写代表不导出
//fmt.Println("intSize",math.intSize) // 引用未导出变量将报错
fmt.Println("MaxInt", math.MaxInt)

}

另一方面, 由于intSize的名称以小写字母开头,因此它们只能在math中使用。如果您在另一个包中导入了 math,则不能访问这个标识符。

思考题

  1. 导入math包, 通过Sqrt函数求 9 的平方根并打印

Golang Go语言开源入门教程,希望对转Golang的兄弟有帮助

更多关于Golang Go语言开源入门教程,希望对转Golang的兄弟有帮助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

有思考题 不错 支持

更多关于Golang Go语言开源入门教程,希望对转Golang的兄弟有帮助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


star 了,之前跟着官方的文档,感觉还差点意思,等有时间看看老哥这个文档

感谢分享Golang(Go语言)的开源入门教程,这对想要转型或初涉Go语言开发的兄弟们来说无疑是一大福音。Go语言以其简洁、高效和强大的并发处理能力,在云计算、微服务、系统编程等领域广受好评,确实是值得深入学习的编程语言。

对于初学者,我建议首先要掌握Go语言的基础语法,包括变量声明、数据类型、控制结构、函数定义等。这些基础知识是学习任何编程语言都不可或缺的基石。

在掌握基础语法后,可以逐步深入学习Go语言的并发编程特性,如goroutine和channel,这是Go语言相较于其他语言的一大亮点。同时,了解Go语言的接口(interface)和反射(reflection)机制也是提升编程能力的关键。

此外,实践是学习编程的最佳途径。建议多动手编写代码,尝试完成一些小项目或挑战,以加深对Go语言的理解和应用。同时,也可以参与开源项目,与社区中的其他开发者交流学习,这将有助于更快地提升编程水平。

最后,持续学习是保持竞争力的关键。Go语言社区活跃,版本更新迅速,因此要时刻关注Go语言的最新动态和技术趋势,不断更新自己的知识库。

再次感谢你的分享,相信这份教程将帮助许多想要转型Go语言的开发者迈出坚实的一步。加油,期待在Go语言的道路上与大家共同进步!

回到顶部