Go语言基础(一)

108 阅读6分钟

一.Hello World

不管学习什么语言,都是从HelloWorld来迈入新语言学习的大门,让我们先看看go语言的HelloWorld程序吧。

package main
​
import "fmt"func main() {
    fmt.Println("hello world!")
}

代码解释:

  • go语言的文件后缀是.go
  • package main表示这个文件归属于哪一个包,go语言中,每个文件都有一个属于自己的包
  • import "fmt"表示导入一个包,在这个代码中,这个包是用来输出到控制台的
  • func main表示是主函数,是程序的入口

编译与执行:

// 编译 hello.go 后 会生成一个 hello.exe文件
go build hello.go
// 运行 hello.ext
hello.ext

也可以通过

go run hello.go

来直接运行。不过需要记住在生产环境中,代码需要先编译后执行,与开发环境有一定的区别。

二.Go语言主要特征

在学习go语言之前,当然得先了解go语言的一些特征与优势,这样在学习完之后才能够进行更贴合go语言特色的开发。

思想

Less can be more 大道至简,小而蕴真 让事情变得复杂很容易,让事情变得简单才难 深刻的工程文化

优点

  • 自带gc。
  • 静态编译,编译好后,扔服务器直接运行。
  • 简单的思想,没有继承,多态,类等。
  • 丰富的库和详细的开发文档。
  • 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。
  • 简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性。
  • 超级简单的交叉编译,仅需更改环境变量。
  • Go 语言是谷歌 2009 年首次推出并在 2012 年正式发布的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去10多年间软件开发的难度令人沮丧。Google 对 Go 寄予厚望,其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助开发者处理琐碎但重要的内存管理问题。Go 的速度也非常快,几乎和 C 或 C++ 程序一样快,且能够快速开发应用程序。

Go语言命名:

1.Go的函数、变量、常量、自定义类型、包(package)的命名方式遵循以下规则:

    1)首字符可以是任意的Unicode字符或者下划线
    2)剩余字符可以是Unicode字符、下划线、数字
    3)字符长度不限

2.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

3.Go还有37个保留字

    Constants:    true  false  iota  nil
​
    Types:    int  int8  int16  int32  int64  
              uint  uint8  uint16  uint32  uint64  uintptr
              float32  float64  complex128  complex64
              bool  byte  rune  string  error
​
    Functions:   make  len  cap  new  append  copy  close  delete
                 complex  real  imag
                 panic  recover

4.可见性:

    1)声明在函数内部,是函数的本地值,类似private
    2)声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect
    3)声明在函数外部且首字母大写是所有包可见的全局值,类似public

Go语言声明:

有四种主要声明方式:

    var(声明变量), const(声明常量), type(声明类型) ,func(声明函数)。

Go的程序是保存在多个.go文件中,文件的第一行就是package XXX声明,用来说明该文件属于哪个包(package),package声明下来就是import声明,再下来是类型,变量,常量,函数的声明。

三.Go语言基础语法

变量与常量

Go语言的变量声明格式为:

    var 变量名 变量类型

变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。 举个例子:

    var name string
    var age int
    var isOk bool

批量声明

每声明一个变量就需要写var关键字会比较繁琐,go语言中还支持批量变量声明:

    var (
        a string
        b int
        c bool
        d float32
    )

变量的初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil

当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:

    var 变量名 类型 = 表达式

举个例子:

    var name string = "pprof.cn"
    var sex int = 1

或者一次初始化多个变量

    var name, sex = "pprof.cn", 1

类型推导

有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。

    var name = "pprof.cn"
    var sex = 1

短变量声明

在函数内部,可以使用更简略的 := 方式声明并初始化变量。

    // 全局变量m
    var m = 100func main() {
        n := 10
        m := 200 // 此处声明局部变量m
        fmt.Println(m, n)
    }

常量

相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。

    const pi = 3.1415
    const e = 2.7182

声明了pie这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。

多个常量也可以一起声明:

    const (
        pi = 3.1415
        e = 2.7182
    )

const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:

    const (
        n1 = 100
        n2
        n3
    )

上面示例中,常量n1、n2、n3的值都是100

这次的笔记就先记录到这里,下次接着记录有关go的学习笔记。 在这次go语言的最基础部分的学习中,了解了许多go语言的特性以及go语言最初部分与其他语言相似与不相似的地方。我认为最初步的学习更重要的是了解思想,各个编程语言的语法都有共同之处,但是思想缺差别很大,想要学好一门语言更重要的是学习其中的思想并融会贯通。