【Go 语法】程序结构

背景

Go 语言和其他的语言一样,庞大的程序都是由小的基本组件构建而来:

  • 变量:存储值
  • 表达式:通过 + - 等操作合并成大的
  • 基本类型:通过数组和结构体进行聚合
  • 表达式:通过 if 和 for 等控制语句来决定执行顺序
  • 语句:被组织成函数,用于隔离和复用
  • 函数:被组织成源文件和包

名称

Go 语言有 25 个关键字,不可用作名称:

  • break、default、case、else、goto、switch、if、for、continue:用于流程控制
  • func:用于定义函数和方法
  • interface:用于定义接口
  • select:用于选择不同类型的通讯
  • defer:在函数退出之前执行
  • go:用于并行
  • map:用于声明 map 类型
  • struct:用于定义抽象数据类型
  • chan:用于 channel 通讯
  • package:用于定义包
  • const:用于定义常量
  • fallthrougth:在 switch 中每一个分支结束后可以使用,执行下一分支
  • range:用于读取 slice、map、channel 数据
  • type:用于声明自定义类型
  • import:用于导入包
  • return:用于函数返回
  • var:用于定义变量

    Go 语言还有 三十几个内置的与声明的常量、类型和函数

  • 常量

    • ture, false :布尔值
    • iota:iota 在 const 关键字出现时被重置为 0,const 中每新增一行常量声明将 iota 计数一次
    • nil:表示某个变量为空
  • 类型
    • int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:整型
    • uintptr:指针
    • float32, float64:浮点型
    • complex128, complex64:复数型
    • bool:布尔型
    • byte, rune:字符型。byte 对应 UTF-8,rune 对应 unicode
    • string:字符串型
    • error:错误型
  • 函数
    • make:返回 Type 本身(只能应用于 slice, map, channel)
    • len:返回长度
    • cap:返回容量
    • new:返回指向 Type 的指针
    • append:把东西增加到 slice 里面,返回修改后的 slice
    • copy:赋值 slice,返回赋值的数目
    • close:关闭 channel
    • delete:从 map 中删除 key 对应的 value
    • complex
    • real:返回 complex 的虚部
    • imag:返回 complex 的实部
    • panic:停止常规的 goroutine
    • recover:允许程序定义 goroutine 的 panic 动作

Notice

  • 若一个实体在函数中声明,那它只局部有效
  • 若一个实体在函数外声明,那它将对包内的所有源文件可见
  • 其中,实体的第一个字母的大小决定其可行性是否跨包。若名称以大写字母开头,则它是可导出的,对包外是可见和可访问的。包本身总是以小写字母组成。
  • 当遇到有单词组合的名称时,Go 程序员采用驼峰式风格

声明

声明给一个程序实体命名,并设定其部分或全部属性。有 4 个主要的声明:

  • 变量(var)
  • 常量(const)
  • 类型(type)
  • 函数(func)

Example:以一个实例分别介绍 4 个主要的声明。

// 每一个文件以 package 声明开头,表明文件属于哪个包
package main

// import 导入包
// 形式:
// import ( "包名 1"
//          "包名 2"  
//           ...
//          )
import ("fmt"
        )

// 定义常量 boilingF
// 当定义不位于函数内,则为包级别的声明
// 常量定义方式: 
// const 常量名 = 常量值
const boilingF = 212.0

// 定义 main 函数
func main(){
    // 定义变量 f, c 
    // f,c 均是 main 函数的局部变量 
    var f, c float64
    f = boilingF
    c = fToc(f)
    PrintfBoilingPoint(f, c)
}

// 定义 fToc 函数
// 返回类型为 float64
// 输入参数为 float64 类型的 f
// 函数定义形式:
//      func 函数名(传参名称 传参类型) 返回类型 {
//          函数内容
//      }
func fToc(f float64) float64 {
    return (f - 32) * 5 / 9
}

// 定义printfBoilingPoint
// 无返回类型
// 输入参数为 float64 类型的 f 和 c
func PrintfBoilingPoint(f float64, c float64) {

    // 函数名的首字母为大写,表明此函数为包外可见函数
    // 由此可见,自定义函数 fToc 为包外不可见函数
    // PrintfBoilingPoint 为包外可见函数
    // 调用包外函数的格式:
    //          包名.函数名(参数列表)
    fmt.Printf("boling point = %g °F or %g °C\r\n", f, c)
}

猜你喜欢

转载自blog.csdn.net/XiuHua_Wu/article/details/81711267