A tour of Go (1) - Go语言基础知识

Wednesday, December 16, 2020

A tour of Go (1) - Go语言基础知识

1. Go语言简介

计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程面向对象编程函数式编程面向消息编程 等,这些思想究竟孰优孰劣,众说纷纭。

除了OOP外,近年出现了一些小众的编程哲学,Go 语言对这些思想亦有所吸收。例如,Go 语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go 语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统 领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行 的支持,这对于游戏服务端的开发而言是再好不过了。

Go 语言的主要特性

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

2. 包

每个Go 程序都是由包构成的

程序由 main 包开始运行

package main

import (
  "fmt"
)

func main(){ //这个 { 不能换行
  fmt.Println("Hello World!")
}

3. 导入

此代码用圆括号组合了导入,这是“分组 ”形式的导入语句

import(
  "fmt"
  "math"
)

4. 导出名

在 Go 中,如果一个名字以大写字母 开头,那么它就是已导出的

例如,Pi 就是个已导出名,它导出自math 包。

在导入一个包时,你只能引用其中已导出的名字。任何未导出的名字在该包外均无法访问

5. 函数

函数可以没有参数 或接受多个参数,注意,类型在变量名之后。

func add(x int, y int) int {
  return x + y
}

当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略。

func add(x, y int) int {
  return x + y
}

多值返回:函数可以返回任意数量的返回值,需要定义类型

func swap(x, y string) (string, string){
  return y, x
}

Go 的返回值可被命名,它们会被视作定义在函数顶部的变量。

返回值的名称应当有一定的意义,它可以作为文档使用。

适用于端函数,长函数会影响代码可读性

func split (sum int) (x, y int){
  x = sum * 4 / 9
  y = sum - x
  return
}

6. 变量

var 语句用于声明一个变量列表,跟函数的参数列表一样,类型在最后。

变量名由字母数字下划线组成,其中首个字符不能为数字

var c, python, java bool
var i int

如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型。

var c, python, java = true, false, "no"

在函数中,简介赋值语句 := 可以在类型明确的地方代替 var 声明。

func main(){
  k := 3
  l := "no"
}

函数外的每个语句都必须以关键字开始(var, func 等),因此 := 结构不能在函数外使用。


同导入语句语句一样,变量声明也可以“分组 ”成一个语法块。

var( //这种因式分解关键字的写法一般用于声明全局变量
	ToBe bool = false
  MaxInt unit64 = 1<<64 - 1
  z complex128 = cmplx.Sqrt(-5 + 12i)
)

基本类型包括:int=0,``bool=falsestring=""float32(64)`等。

7. 类型转换

C语言 不同的是,Go 在不同类型的项之间赋值时需要显式转换。

var i int = 42
var f float64 = float64(i)
var u uint = uint(f)  

8. 常量

常量的声明与变量类似,只不过是使用 const 关键字。

const Pi = 3.14

常量可以是字符字符串布尔值数值

常量不能用 := 语法声明。

posted @ 2020-12-16 21:32  夜魔残月  阅读(298)  评论(1)    收藏  举报