一起来学 Go -- 数据与逻辑结构

栏目: Python · 发布时间: 7年前

内容简介:最近,我准备学习一门新的编程语言。之前写过一篇博文:基础类型复合类型

最近,我准备学习一门新的编程语言。之前写过一篇博文: 如何学习一门新的编程语言 - 以 Python 为例 ,按照这种学习思路,我们一起来学 Go。

1. Go 的数据结构

基础类型

  • 布尔类型:bool
  • 整型:byte、int、int8、int16、uint、uintptr
  • 浮点类型:float32、float64
  • 复数类型:complex64、complex128
  • 字符串:string
  • 字符类型:rune
  • 错误类型:error

复合类型

  • 指针:pointer
  • 数组:array
  • 切片:slice
  • 字典:map
  • 通道:chan
  • 结构体:struct
  • 接口:interface

Go 变量标识由字母、数字、下划线组成,其中首字母不能为数字。声明变量时,类型放在变量标识后面。一般形式为:

// 单个变量
var identifier type

// 多个变量
var identifier1, identifier2 type

声明变量时,如果没有初始化,则默认为零值。对于有初始值的变量声明,可以省略类型,因为 Go 能推导出类型。

var i int = 0
var i = 0
// 还可以省略 var 关键字,使用 := 语法糖声明变量
i := 0

2. Go 的逻辑结构

  • 循环结构 for
for i := 0; i < 10; i++ {
    sum += i
}
sum := 0
for sum < 1000 {
    sum += sum
}
  • 条件分支 if、switch
if x < 0 {
    return -x
} else {
    return x
}
switch t := i.(type) {
case bool:
    return "I'm a bool"
case int:
    return "I'm an int"
default:
    return "Don't know type %T", t
}
  • 跳转 goto

goto 可以无条件跳转到指定的标签

if error {
  goto doError
}
// 发生错误时,跳过的代码块
doError:
// 发生错误时,立即执行的代码块
  • 推迟 defer

defer 语句会被压入栈中,当外层函数返回之后,依次出栈执行。

func main() {
    defer second_run()
    first_run()
}

3. Go 的模块定义

3.1 函数

Go 语言函数定义格式:

func function_name( [parameter list] ) [return_types] {
    // 函数体
}
  • func,函数声明关键字
  • function_name,函数名称,与参数列表一起构成了函数签名
  • parameter list,参数列表
  • return_types,返回类型

举个例子:

func max(num1, num2 int) int {
    if (num1 > num2) {
      return num1
    } else {
      return num2
    }
}

Go 函数还可以返回多个值:

func addAndMult(a int, b int) (int, int){
    return a + b, a * b
}

除此,Go 中还可以声明匿名函数,直接赋值给变量:

my_func_name := func() {
    // 函数体
}

3.2 包(package)

Go 使用 package 来管理代码,这种方式与 Python 类似。package 是一个或多个 Go 源码文件的集合。Go 语言内置了很多 package,例如 fmt、os、io 等。

声明包时,在文件第一行添加如下标识:

package package_name

引用时,在文件头部添加如下标识

import "path/package_name"

package 的特性:

  • 一个目录下的同级文件属于一个 package
  • 包名与目录名可以不同,但是通常会保持一致
  • 程序的入口是 main 包的 main 函数,如果没有 main 包,则不会生成可执行文件
  • 仅首字母大写的标识符,包外可以访问

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning PHP, MySQL, JavaScript, and CSS

Learning PHP, MySQL, JavaScript, and CSS

Robin Nixon / O'Reilly Media / 2012-9-3 / USD 39.99

If you're familiar with HTML, you can quickly learn how to build interactive, data-driven websites with the powerful combination of PHP, MySQL, and JavaScript - the top technologies for creating moder......一起来看看 《Learning PHP, MySQL, JavaScript, and CSS》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具