Go 语言入门指南:基础语法和常用特性解析(一) | 青训营

153 阅读4分钟

中文官网地址:Go语言中文网

官方文档地址:Go中文文档 (要学会查官方文档 ~ )

1. 基础语法

1.1 固定节目:编写"Hello, World!"程序

package main
import "fmt"func main() {
    fmt.Println("Hello, World!")
}

1.2 基本概念

  Go应用使用包(package)模块(module) 组织代码。

  包(package) : 每个 Go 源代码文件都必须属于一个包(对应到文件系统就是文件夹)。包有助于将代码分成逻辑模块,提高可维护性和可重用性。

通过 import关键字,可以在一个包中引入其他包,使用其中的函数、变量等。

  main 包是一个特殊的包,它定义了独立执行的入口点。标准库中还有很多包,诸如 fmt 用于格式化输入输出(上面的代码中就利用了 fmt 中的 Println() 函数,用于打印输出语句)net/http 用于处理 HTTP 请求等。

  模块(module) : 模块就是 .go 的源文件,一个包中会含有多个模块或子包。

  依赖(Dependency) : 依赖是指我们的项目或代码所依赖的外部包或模块。

1.3 创建项目步骤

  创建文件夹 打开cmd终端:code . 在VS Code终端:go init mod + <module_name>

  就可以创建 .go 文件开始写代码啦 ~

1.4 命名规范

  任何需要对外暴露的名字必须以大写字母开头,否则以小写字母开头。

  当一个常量、变量、类型、函数名、结构字段等以大写字母开头,则其可通过导入被外部包的代码所使用(称为“导出”,类似于public),否则对外部包不可见,只能在包内使用(类似于private)

  应保持名称和目录一致,尽量为小写单词,不要使用 _ 或混合大小写。

  文件小写,以 _ 分割各个单词。

  结构体驼峰命名法。

  接口驼峰命名法,单个函数的结构名以er作为后缀如Writer、Reader。

  变量驼峰命名法,首字母小写,若为bool类型,则以 HasCanIsAllow 开头。

  常量全部大写,使用下划线分割单词。

  单元测试example_test.go 。测试用例的函数名要以 Test 开头,如TestExampl。

1.5 变量的声明和初始化

⚠️Go语言中一旦声明必须使用,否则报错

1. 声明变量关键字 + 变量名称 + 类型

  var 是用于声明变量的关键字。使用 var 关键字可以在代码中定义一个变量并为其分配空间,以便在程序运行时存储和操作数据。

var number int

3. 初始化多个变量

var (
    name string = "李四" 
    age int = 22 
    flag bool
)

注意这里括号是圆括号 (...) ,而非花括号 {...}

4. 类型推断

  Go语言可根据初始化值的类型自动推断出变量的类型:

var name = "李四" 
var age = 22

5. 函数内部可直接通过 := 对变量进行声明和初始化

func GetInfo()(string, int) { 
    name := "李四" 
    age := 22 
    return name, age 
}

5. 匿名变量

  暂时用不上的变量,可以用 _ 表示变量名称:

func getNameAndAgereturn() (string, int)
{ 
    return "李四", 22 
} 

func main() {
    name, _ := getNameAndAgereturn()
}

1.6 常量

  使用关键字 const 来定义常量。常量是在编译时就确定的值,在声明时必须进行初始化,且一旦初始化后就不能再次修改其值。常量的数值可以是表达式,但这些表达式必须在编译时就能够计算出结果。

const PI = 3.14159

const (
        APPNAME = "ShortVideoPlatform"
        VERSION = "1.0"
    )

注意这里括号是圆括号 (...) ,而非花括号 {...}

小结

  青训营的课程讲得比较快,很多地方都是一句带过,所以我又找了官方文档和其他课程作为补充,深感Go语言的简洁、高效和灵活,像是结尾不用写分号、仅仅是变量的声明就有这么多的类型,能大大方便我们的开发,但也正是因为它的简洁和灵活,初学时很容易出错,像是变量的声明和初始化,最开始还是建议选择其中的2-3种方法进行练习和记忆,并且要明白它们所适用的情景,需要一定时间去适应。

— — 笔记内容仅供参考,如有错误欢迎指出 — —