• Go基础——基础语法


    1、简介

    Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。语法类似于C,专为高性能和并发程序而设计。通常用于网络编程、云服务器、游戏服务器、DevOps、Web应用、分布式系统、容器虚拟化、区块链领域等领域。
    罗伯特·格瑞史莫(Robert Griesemer),罗布·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。

    2、基本语法

    标记

    Go 语言可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如:

    fmt.Println("Hello, World!")
    
    • 1

    6 个标记是(每行一个):

    fmt
    .
    Println
    (
    "Hello, World!"
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    行分隔符

    在 Go 语法中,类似python一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号结尾,这些工作都将由 Go 编译器自动完成。
    如果打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中并不建议这种做法。就算这样写,目前的Goland运行时会自动给你换行。

    注释

    注释不会被编译,每一个程序应该有相关注释。
    单行注释是最常见的注释形式,可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。如:

    // 这是单行注释
    /*
    	啊啊啊啊啊啊啊啊啊啊啊啊
    	这是多行注释
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5

    标识符

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

    mahesh kumar abc move_name a_123
    myname50 _temp j a23b9 retVal

    无效的标识符:

    1ab(以数字开头)
    case(关键字)
    a+b(运算符是不允许的)

    关键字

    25常用关键字:
    在这里插入图片描述
    36预定义标识符:
    在这里插入图片描述

    2、语言结构

    第一个Go程序:

    package main
    
    import "fmt"
    
    //文件名与包名没有直接关系,不一定要将文件名与包名定成同一个。
    //文件夹名与包名没有直接关系,并非需要一致。
    //同一个文件夹下的文件只能有一个包名,否则编译报错。
    
    func main() {
    	fmt.Println("Hello, World!")
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
    • import “fmt” 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
    • // 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
    • func main() 是程序开始执行的函数。main函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init()函数则会先执行该函数)。
    • fmt.Println(…) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。 使用 fmt.Print(“hello, world\n”) 可以得到相同的结果。 Print 和Println这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。

    需要注意的是 { 不能单独放在一行,在运行时会产生错误:
    在这里插入图片描述

    go程序运行(需先配置环境):
    1、使用Goland运行,需选择配置go环境
    在这里插入图片描述
    2、使用命令行运行: go run test.go
    在这里插入图片描述

    3、数据类型

    1、布尔型
    布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
    2 数字类型
    整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
    整型:
    在这里插入图片描述
    浮点型:
    在这里插入图片描述
    其他:int、uint大小取决于操作系统位数。
    在这里插入图片描述

    3、字符串类型:
    字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
    4、派生类型:
    包括:

    • 指针类型(Pointer)
    • 数组类型
    • 结构化类型(struct)
    • Channel 类型
    • 函数类型
    • 切片类型
    • 接口类型(interface)
    • Map 类型

    4、变量

    Go 语言中必须使用所有被声明的变量。变量名由字母、数字、下划线组成,其中首个字符不能为数字。
    声明变量的一般形式是类似于js,使用 var 关键字定义一个字符串:

    var variable string
    
    • 1

    可以一次声明多个变量,但是声明多个变量时,变量类型需要相同:

    var variable 1, variable 2 int
    
    • 1

    变量命名的3种方式:

    func test() {
    	var a string   // 一般方式先声明
    	a = "aaa"   // 再赋值
    	var b = 2  // 根据值自行判定变量类型
    	c := 3   // 初始化声明(推荐)  := 
    	fmt.Println(a)
    	fmt.Println(b)
    	fmt.Println(c)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    多变量声明:

    var vname1, vname2, vname3 type
    vname1, vname2, vname3 = v1, v2, v3
    
    var vname1, vname2, vname3 = v1, v2, v3 // 和 python 类似,不需要显示声明类型,自动推断
    
    vname1, vname2, vname3 := v1, v2, v3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:在相同的代码块中,不可以再次对于相同名称的变量使用初始化声明,即如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误。这是使用变量的首选形式,但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值。使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明。
    如果一个变量初始化后,未进行赋值,数值类型为0,布尔类型为 false,字符串为 “”(空字符串):

    package main
    import "fmt"
    
    func main() {
    	var a string
    	var b int
    	var c bool
    	fmt.Println(a)
    	fmt.Println(b)
    	fmt.Println(c)
    }
    
    输出:
    ""
    0    
    false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    5、常量

    常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

    const value1 = 2
    const value2 string = "abcd"
    
    • 1
    • 2

    可省略类型说明符,编译器可以根据变量的值来推断其类型。常量还可用作枚举:

    package main
    
    import "unsafe"
    const (
        a = "abc"
        b = len(a)
        c = unsafe.Sizeof(a)  // 返回变量在内存中占用的字节数
    )
    
    func main(){
        println(a, b, c)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    常量表达式中,函数必须是内置函数,否则编译不过。
    常量中还存在一种特殊的常量:iota。(参见后续文章)

    6、运算符

    go语言运算符与C语言中运算符基本一致。

  • 相关阅读:
    MySQL-内置函数
    KingbaseES 数据库逻辑优化规则
    Mediasoup在node.js下多线程实现
    Abbkine丨TraKine F-actin染色试剂盒(绿色荧光)方案
    T1097 画矩形(信息学一本通C++)
    【数据结构】详解链表结构
    英语语音篇 - 元音自然拼读
    Springcloud实战之自研分布式id生成器
    Java内存区域
    C语言知识点总结——待补充
  • 原文地址:https://blog.csdn.net/qq_43325582/article/details/133947738