首页 > 其他分享 >0x00 Hello Go

0x00 Hello Go

时间:2023-06-12 10:22:35浏览次数:35  
标签:fmt 0x00 hello go build Go main Hello

GO 程序的基本结构

Go 语言的文件后缀是 .go 结尾,例如 hello.go

Go 项目的文件目录通常是这样的:

.
└── src
    └── go_code
        └── learn 项目名
            └── package1 
            └── package2

以下代码是一个 hello world 程序的代码示例

/**
 * hello 主程序
 * @version: v1.0
 * @author: Clover
 * @create: 2023-04-30 16:04
 */
package main

import "fmt"

func main() {
  fmt.Println("hello world!")
}
  1. 1~6行是一个块注释,写在我们代码文件头部的注释,通常是对当前文件的一个描述,这是一个好习惯,我推荐大家都这么做,通常在 IDE 中也可以配置生成这种注释。
  2. package main 表示该文件所在的包是 main 。Go 文件都必须归属于某一个包而不能脱离。
  3. import "fmt" 表示引入一个包,包名为 fmt ,引入该包后,就可以使用 fmt 包里面的函数,例如: fmt.Println("")
  4. func main() {...} 它是一个主函数,每一个程序都必须存在一个主函数,它是程序的入口,和 Java 语言的 main 函数是一样的。
    • fun 是一个关键字,表示一个函数,后面紧跟一个函数名。
    • {...} 函数名后的花括号表示一个作用域,或者称为代码块。我们方法的所有逻辑基本都是写在这些 {} 里。
  5. fmt.Println("hello world!") 表示通过成员运算符 . 来调用 fmt 包下的 Println() 方法,这个方法实现的功能是将我们传递的参数打印到控制台。在这我传递了一个 hello world! 字符串,程序执行后控制台将输出 hello world

如果需要执行 go 代码,可以通过 go build 命令去将其编译成一个可执行文件。如若不需要打包而是单纯的想执行它,那么可以使用 go run 命令去操作:

# clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/main [16:26:12] 
$ go run hello.go  
hello world!

通过 go build 命令去生成可执行文件,那么默认的文件名是源码文件的文件名,例如:go build hello.go 它会生成 hello

如果需要重命名,那么可以通过 -o 参数进行指定,需要注意的是:后缀必须对应当前操作系统执行文件的后缀,例如windows下是 exe ,在 Mac 中无需指定后缀。

go build -o test hello.go

执行 go run 命令比执行 go build 后执行可执行文件的速度是要慢的,因为执行文件是通过 go build 生成的,无需二次 build ,而 go run 命令每次执行的时候都需要 build

  1. 使用 go build 命令编译后,即使在没有 Go 开发环境的机器上,编译生成的可执行文件它仍然是可以正常运行的。
  2. 如果我们直接使用 go run 命令,它是不会生成任何可执行文件,如果想要在其它机器上运行,那么需要配置 Go 开发环境,否则无法执行。
  3. 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以可执行文件实际大小比源码大很多。
  1. Go 源文件后缀名是 .go
  2. Go 应用程序的执行入库是 main() 函数
  3. Go 语言严格区分大小写
  4. Go 代码每个语句后边后不需要加上分号(Go 编译时会在每行末尾自动加分号),当然手动加上分号也是没有问题的。
  5. Go 编译器是至上而下一行一行进行编译的,因此我们代码中如果没有手动添加分号 ; ,那么一行只允许存在一条语句。因为如果没有添加分号且一行存在多条语句的时候,编译器会将其当作一个完整的语句来编译,这会造成语法错误。
  6. Go 语言自定义变量或者import的包没有被使用时,代码无法通过编译,因为这种情况在大项目下,可能会造成非常多的冗余无效代码
  7. 大括号 {} 都是成对出现的,缺一不可

标签:fmt,0x00,hello,go,build,Go,main,Hello
From: https://www.cnblogs.com/CloverYou/p/17474229.html

相关文章

  • django views 序列化
      RESTframework中的序列化类与Django的Form和ModelForm类非常相似。我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSerializer类,它为创建处理模型实例和查询集的序列化提供了有效的快捷方式。Serializers 序列化器允许把像查询......
  • 基于Go的缓存实现
    概念缓存是计算机科学中的一个重要概念。设想某个组件需要访问外部资源,它向外部源请求资源,接收并使用资源,这些步骤都需要花费时间。当组件再次需要资源时,可以再次请求资源,但这种方式从时间上考虑是比较低效的。相反,组件可以将请求结果保存在本地某处,然后再次使用,使用本地数据总是比......
  • Golang 应用脚手架
    Nunu提供了全面的文档和示例,帮助你快速入门。它还包括一套测试套件,确保你的应用程序按预期工作。安装要求要使用Nunu,你需要在系统上安装以下软件:Golang1.16或更高版本GitMySQL5.7或更高版本(可选)Redis(可选)安装你可以通过一行命令安装Nunu:1goinstall......
  • 解决gorm安装报错
    报错:go:modulegrom.io/gorm:Get"https://proxy.golang.org/grom.io/gorm/@v/list":dialtcp142.251.43.17:443:connectex:Aconnectionattemptfailedbecausetheconnectedpartydidnotproperlyrespondafteraperiodoftime,orestablishedconn......
  • Django学习之路
    Django学习之路基于Jason的视频,收益匪浅.谢谢Jason的教诲.1、Django前戏2、Django基础3、Django路由层4、Django视图层......
  • STL-algorithm(ACM)
    unique(a.begin(),a.end())待研究与离散化有关//翻转(reverse(位置,位置))reverse(a.begin(),a.end());inta[5]={1,2,3,4,5};reverse(a,a+5);//结果54321循环移位(rotate(移动到该位置前一个地方,移动区间的头位置,移动的尾位置))第一个位置必须在第二......
  • Go 语言实现 MySQL 数据库事务
    Go实现MySQL数据库事务一、MySQL事务MySQL事务是指一组数据库操作,它们被视为一个逻辑单元,并且要么全部成功执行,要么全部回滚(撤销)。事务是数据库管理系统提供的一种机制,用于确保数据的一致性和完整性。事务具有以下特性(通常由ACID原则定义):原子性(Atomicity):事务中的所有操作......
  • Python Django Restful API simple JWT
    在这种情况下,您可以创建一个自定义权限类,并检查用户所属的任何组是否具有相应的权限。例如,您可以在Django后台为每个组定义一个具有读取权限(`view`权限)的权限对象。然后,在自定义权限类中检查用户组是否具有此权限。首先,在`models.py`文件中创建一个新的权限。例如,创建一个名......
  • 基于Drone+Gogs流水线-全面认识轻量级云原生CI引擎Drone
    1.介绍DronebyHarness™是一个基于Docker容器技术的可扩展的持续集成引擎,用于自动化测试、构建、发布。每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控制其构建环境并保证隔离。开发者只需在项目中包含.drone.yml文件,将代码推送到git仓库,Drone就能够自动化的......
  • Goland 包导入正常,但是无法解析函数和成员属性,编译不报错
    这段时间Goland突然出现了一个毛病,每次goget依赖后,虽然依赖拉下来了,但是代码里使用了这个module的地方无法引用出他的成员和属性,大片的标红,都提示「Unresolvedreference'xxxxx'」,但是只要把项目关了,重新打开,再次触发module的index索引动作,就恢复正常了。本来想看看有没......