GO结构
Go 语言的基础组成有以下几个部分:- 包声明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 注释
package main
import "fmt"
func main() {
/* 这是我的第一个简单的程序 */
fmt.Println("Hello, World!")
}
以下是对这个简单例子的每行解释:
解释 | 想法 | |
---|---|---|
<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 ) | 什么是外部的包?导出? 包内部? |
## GO语言声明 :::info 有四种主要声明方式:
**<font style="color:rgb(51, 51, 51);">var</font>**(声明变量), **<font style="color:rgb(51, 51, 51);">const</font>**(声明常量), type(声明类型) ,func(声明函数)。
:::
Go的程序是保存在多个.go文件中,
- 文件的第一行就是package XXX声明,用来说明该文件属于哪个包(package),
- package声明下来就是import声明
- 再下来是类型,变量,常量,函数的声明。
:::info c语言中
:::
- 变量类型:int/float/double/char
- 常量声明:
宏定义 | const关键字 | 枚举常量 | |
---|---|---|---|
作用 | 使得程序变得直观,但编译时不会报错,只有运行时会错,建议少使用 | 保护变量,使其变成变常量,如果变量值不怎么变建议使用 | 使得程序变得直观,是一种特殊的整型(这也是局限性) |
语法区别 | #define 宏 替换体 写在开头,很像 #include <stdio.h> |
像个副词,可修饰类型,可修饰指针,但要求声明和赋值一起完成,也就是只能初始化 1. const int LENGTH = 10; 2. 指针 |
类似结构 具体省略啥的自己看枚举那章 |
[
](https://www.runoob.com/go/go-fmt-sprintf.html)基本语法点
退出返回值
与其他语言的主要差异
- main函数无参数、无返回值
- 通过os.Exit来返回状态(import{…}和code:是自动出现的)
获得命令行参数
main函数不支持传入参数,所以我们通过os.Args获取命令行参数
GO标记
Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:
### 行分隔符 1. 一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。 2. 如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。
注释
和c语言一样
标识符
和c语言一样,组成=字母/数字/下划线_,就是不能以数字开头
字符串连接
Go 语言的字符串连接可以通过 + 实现:关键字
- 下面列举了 Go 代码中会使用到的 25 个关键字或保留字:
- 除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:(与上面区别???)
- 程序一般由关键字、常量、变量、运算符、类型和函数组成。
程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}。
程序中可能会使用到这些标点符号:<font style="color:rgb(51, 51, 51);">.、,、;、: 和 …。</font>
格式化字符串 fmt.Sprintf
Go 语言中使用 fmt.Sprintf 格式化字符串并赋值给新串:?待修补
package try
import "fmt"
func main() {
var i,j int
for i=2;i<100;i++{
for j=2;j<(i/j);j++{
if (i/j == 0){
break
}
}
if(j>(i/j)){
fmt.Print("%d 是素数\n", i)
}
}
}
package main
import (
"fmt"
"testing"
)
func TestFibList(t*testing.T) {
var a,b int = 1,1
t.Log(a)//在测试文件更常用 fmt.Print(a)
for i:=0;i<5; i++{
fmt.Println("",b)
tmp :=a
a = b
b = tmp + a
}
}
//测试斐波那契数列,1、1、2、3、5、8、13、21、34....
//F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)