GO结构

Go 语言的基础组成有以下几个部分:
  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释
  1. package main
  2. import "fmt"
  3. func main() {
  4. /* 这是我的第一个简单的程序 */
  5. fmt.Println("Hello, World!")
  6. }

以下是对这个简单例子的每行解释:

解释 想法
<font style="color:rgb(51, 51, 51);">package main</font> 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。 不太懂 包——表明代码所在的模块
import "fmt" import “fmt” 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。 即引用,引入代码依赖
func main() {… } 下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。 功能实现
/ 这是我的第一个简单的程序 / 单行//… 多行/**/ 和c一样
fmt.Println(“Hello, World!”) 下一行 fmt.Println(…) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。 使用 fmt.Print(“hello, world\n”) 可以得到相同的结果。 Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。
Print/Group 开头大写 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected ) 什么是外部的包?导出?
包内部?
这点不同
基本语法点 - 图1 ## GO语言声明 :::info 有四种主要声明方式: **<font style="color:rgb(51, 51, 51);">var</font>**(声明变量), **<font style="color:rgb(51, 51, 51);">const</font>**(声明常量), type(声明类型) ,func(声明函数)。 ::: Go的程序是保存在多个.go文件中,
  1. 文件的第一行就是package XXX声明,用来说明该文件属于哪个包(package),
  2. package声明下来就是import声明
  3. 再下来是类型,变量,常量,函数的声明。

:::info c语言中

:::

  1. 变量类型:int/float/double/char
  2. 常量声明:
宏定义 const关键字 枚举常量
作用 使得程序变得直观,但编译时不会报错,只有运行时会错,建议少使用 保护变量,使其变成变常量,如果变量值不怎么变建议使用 使得程序变得直观,是一种特殊的整型(这也是局限性)
语法区别 #define 宏 替换体 写在开头,很像 #include <stdio.h> 像个副词,可修饰类型,可修饰指针,但要求声明和赋值一起完成,也就是只能初始化
1. const int LENGTH = 10;
2. 指针 基本语法点 - 图2
类似结构 基本语法点 - 图3
具体省略啥的自己看枚举那章

[

](https://www.runoob.com/go/go-fmt-sprintf.html)基本语法点

退出返回值

与其他语言的主要差异

  • main函数无参数、无返回值
  • 通过os.Exit来返回状态(import{…}和code:是自动出现的)
    基本语法点 - 图4

获得命令行参数

main函数不支持传入参数,所以我们通过os.Args获取命令行参数
基本语法点 - 图5
基本语法点 - 图6

GO标记

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。
如以下 GO 语句由 6 个标记组成:
基本语法点 - 图7 ### 行分隔符 1. 一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。 2. 如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。

注释

和c语言一样

基本语法点 - 图8

标识符

和c语言一样,组成=字母/数字/下划线_,就是不能以数字开头

字符串连接

Go 语言的字符串连接可以通过 + 实现:

基本语法点 - 图9

关键字

  • 下面列举了 Go 代码中会使用到的 25 个关键字或保留字:
    基本语法点 - 图10
  • 除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:(与上面区别???)
    基本语法点 - 图11
  • 程序一般由关键字、常量、变量、运算符、类型和函数组成。
    程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}。
    程序中可能会使用到这些标点符号:<font style="color:rgb(51, 51, 51);">.、,、;、: 和 …。</font>

格式化字符串 fmt.Sprintf

Go 语言中使用 fmt.Sprintf 格式化字符串并赋值给新串:

基本语法点 - 图12

基本语法点 - 图13

?待修补

  1. package try
  2. import "fmt"
  3. func main() {
  4. var i,j int
  5. for i=2;i<100;i++{
  6. for j=2;j<(i/j);j++{
  7. if (i/j == 0){
  8. break
  9. }
  10. }
  11. if(j>(i/j)){
  12. fmt.Print("%d 是素数\n", i)
  13. }
  14. }
  15. }
  1. package main
  2. import (
  3. "fmt"
  4. "testing"
  5. )
  6. func TestFibList(t*testing.T) {
  7. var a,b int = 1,1
  8. t.Log(a)//在测试文件更常用 fmt.Print(a)
  9. for i:=0;i<5; i++{
  10. fmt.Println("",b)
  11. tmp :=a
  12. a = b
  13. b = tmp + a
  14. }
  15. }
  16. //测试斐波那契数列,1、1、2、3、5、8、13、21、34....
  17. //F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)