Go语言基础一:环境配置与基础语法

配置开发环境

开始使用Go,首先需要一个完善的开发环境。

下载并安装Go

安装包的下载地址为:https://golang.org/dl/

go语言中文社区下载:https://studygolang.com/dl

Windows系统安装后,可以在命令行输入 go命令来查看是否正确安装,并使用go version来查看安装版本。

image

package main

import (
	"fmt"
)

func main() {
	var x string = "Hello World!! By Go"
	fmt.Println(x)

}

使用go命令go run hello.go运行上述代码,输出结果如下:

PS E:\WorkSpace\go> go run .\hello.go
Hello World!! By Go

Go语言代码结构

Go语言的基础组成部分有:包声明、引入包、函数、变量、语句、注释。

  1. 上述代码的第一行packaga main包声明,必须在源文件中的非注释第一行指明这个文件属于哪个包。

    关于包名:

    • go的package不局限一个文件,可以由多个文件组成
    • go不要求package的和所在目录名相同,但最好是保持相同,否则容易引起歧义。
    • 每个子目录中只能存在一个package,否则编译报错
    • 每一个package下的多个文件中只能有一个main()函数
    • 每个go程序都必须包含一个package main,且package main必须包含一个func main
  2. 下一行代码中import "fmt"包的引入,这里导入Go程序所需要的fmt包,fmt包实现了格式化IO(输入/输出)的函数

    • 单行导入

      import "pkg1"
      import "pkg2"
      
    • 多行导入

      import(
      	"pkg1"
      	"pkg2"
      )
      
    • import "fmt" //最常用的导包方式
      import "./pkg1" //导入同一目录下pkg1包中的内容
      import f "fmt" //导入fmt,并重命名为f;可以用于区分同名包,或简化较长包名
      import . "fmt" //导入fmt,启用别名".",这样可以直接引用包把内容,不需要再添加fmt。例如,fmt.Println() --写为--> Printlf()
      import _ "pkg1" //匿名导入包,只导入包结构以及init()函数,但不使用包内类型和数值。且在import时就执行pkg1包的init()函数。
      
  3. 下一行的func main()是程序开始执行的函数。main函数是每一个可执行程序必须包含的,一般来说都是会在启动后第一个执行的函数(如果有init()函数则会先执行该函数)

  4. 下一行的//这是一个注释注释内容,在程序执行时会忽略。

  5. 下一行代码声明了一个string型变量

  6. 下一行fmt.Println(),这是一条代码语句,会将字符串输出到带控制台,并自动换行。

Go语言基础语法

Go行分隔符

在Go程序中,一行代码代表一行语句,每个语句也不需要以;结尾;如果将多条语句写在同一行,则必须使用人为区分,但是一般也不推荐这种做法。

注释

注释不会被编译,每一个包都应该有一个注释。

//单行注释是最常见的注释形式,可以在任何地方的开头使用单行注释

/*
	多行注释或块注释
*/

关键字

下面列举了 Go 代码中会使用到的 25 个关键字或保留字:

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr

标识符

标识符是用来命名变量、类型等程序实体。与其他变成语言一样,一个标识应符由一个或多个字母A~Z和a~z数字0~9、下划线_组成。标识符的第一个字符不能为数字。标识符不能为关键字。

name age user_name user_123  a _user  这些都是有效的标识符

变量

变量声明

变量的声明方式有两种,并且对Go语言,变量的声明要把变量类型放在变量名之后的。例如:

//Go语言的变量声明必须用空格隔开
//方式一
var x string = "hello world"
var z int = 12 
//方式二
x := string("hello world")
z := int(12)

但是Go语言也可以不指定数据类型,系统将会根据赋值自动判断数据类型。例如:

var x = "hello world"
z := int(12)

在上述第一个示例中,使用关键字var定义名为x的变量hell world。Go会隐式推断x为字符串。在第二个示例中,使用:=运算符定义一个名为z的新变量,并赋值为整数12。

注意,当你没有声明变量类型时,你就必须接受系统自动推断的类型。另外当你的便令已经被声明之后,是不可以使用:=再赋值的,想要修改已经赋值变量的值需要用=。最后:=不可以用来给全局变量赋值

多变量的声明

//类型相同多个变量,非全局变量
var name1,name2,name3 type
name1,name2,name3 = v1,v2,v3
//也可以不指定变量类型
var name1,name2,name3 = v1,v2,v3

//因式分解形关键字的写法一般用于声明全局变量
var (
	name type1 = value1
	age type2  = value2
	
)

变量作用域

Go使用大写字母确定作用域,以大写字母开头的变量可以在包外部导出并访问(类似于java中的public),而小写字母开头的变量都是私有的,只能活在包内部访问。

常量

相同的常量的定义也需要将类型放在标识符之后。常量的定义格式:

const 常量名 [type] = value

同样,对于常量你也可以省略类型[type],编译器会根据值推断其类型。例如:

//显式定义
const a string = "hello"
//隐式定义
const a = "hello"
posted @ 2021-11-13 20:43  newbe3three  阅读(116)  评论(0)    收藏  举报