Go语言结构

news/2024/11/8 6:01:08/

Go语言结构

知识主要参考菜鸟教程。

简单实例

  Go语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 发表达式
  • 注释
package mainimport "fmt"func main() {/*这是一行注释*/fmt.Println("hello,world")
}

  上述程序各个部分组成:

  1. package main定义了包名。源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表明一个可独立执行的程序,每个Go应用程序都包含一个名为main的包。
  2. import "fmt"告诉Go编译器这个程序需要使用fmt包(的函数,或者其他元素),fmt包实现了格式化IO(输入/输出)的函数。
  3. func main()是程序开始执行的函数。main函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有Init()函数则会先执行该函数)。
  4. /***/是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
  5. fmt.Println(…)可以将字符串输出到控制台,并在最后自动增加换行字符\n。使用fmt.Println(“…\n”)会得到相同的结果。Print和Println这两个函数也支持使用变量。如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量arr输出到控制台。
  6. 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group 1,那么使用这种形式的标识符对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并可用的(像面向对象语言中的protected)。

关于包需要注意以及使用的问题

  • 文件名与包名没有直接关系,也就是说不一样要将文件名与包名定成同一个。
  • 文件夹名与报名也没有直接关系,也就是说也不需要一致。
  • 同一个文件夹下的文件只能有一个包名,否则会编译出错。

测试用例

文件结构:

效果图

测试代码:

mul.go

package testimport "fmt"func New() {fmt.Println("test packge print")
}

go.mod

module Twogo 1.19

main.go

package mainimport ("fmt""Two/Calc"   //路径信息
)func main() {test.New()   //包信息fmt.Println("main")
}

运行结果:

效果图

注意,博主使用的go版本为1.19.4,同时使用go env命令需要明确注意以下字段为打开模式。

效果图

而go.mod不是自己创建而来,而是通过以下命令生成:

go mod Init Two

go mod tidy

此时在main.go界面运行即可成功编译通过。


http://www.ppmy.cn/news/11435.html

相关文章

telnet Connection refused 端口不通处理

文章目录一、telnet简述二、telnet Connection refused不通处理思路排查目的主机服务一、telnet简述 telnet一般用于测试本机到目的主机的目的端口网络通不通,telnet命令后面跟目的主机的IP或者域名,格式如下: telnet ${域名}|$…

【Linux】项目自动化构建工具—make/makefile

文章目录1. 什么是make/makefile?2. make/makefile的使用2.1 实例代码2.2 依赖关系和依赖方法2.3 项目清理2.4 make是如何确定是否编译的3. Linux第一个小程序—进度条3.1 \r 和 \n3.2 进度条小程序1. 什么是make/makefile? make是一个命令工具&#xf…

WSL---Windows Subsystem for Linux

WSL:Windows Subsystem for Linux,适用于Windows的Linux子系统;是一个在Windows10/11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。 1、介绍 1.1 文件系统 WSL支持的文件系统需要满足两个目标&#xff1…

车规级CAN FD收发器SIT1044Q,能替代TJA1044吗?

国际知名品牌NXP推出的TJA1042Q、TJA1043Q、TJA1044Q、TJA1051Q等CAN FD收发器芯片,相信很多电子工程师并不陌生。这类芯片应用中,非常成熟稳定,深受汽车电子工程师的认可、支持和青睐。然而,在实际应用中,很多客户由于…

ES6学习笔记之正则扩展

RegExp 在 ES5 中,RegExp构造函数的参数有两种情况: 一是参数是字符串,第二个参数表示正则表达式的修饰符(flag)。 var regex new RegExp(xyz, i);二是,参数是一个正则表示式,这时会返回一个原有正则表…

阿里云Docker仓库操作

为什么用阿里云docker有自己的仓库服务器,但是对没掏钱的(白嫖)用户并不是那么友好,有两个很大的限制:免费用户,在6个月之内如果没有任何操作,将会被自动删除,真的很糟糕啊。匿名用户…

Linux编译器-gcc/g++使用

目录 1. 背景知识 2. gcc如何完成 2.1 预处理(进行宏替换) 2.2 编译(生成汇编) 2.3 汇编(生成机器可识别代码) 2.4 链接(生成可执行文件或库文件) 3 函数库 3.1 分类 3.2 图解 4 gcc选项 1. 背景知…

李群理论笔记1:特殊欧式群SE(3)和刚体运动描述

1.引言:我们为什么要用到特殊欧式群SE(3)描述刚体运动? 我们知道在欧式三维空间中一个物体没有约束有三个旋转自由度和三个平动自由度。为了描述一个可动构件相对另一个固定管构件能够有哪些自由度,本质就是寻找可动构件上附带的动坐标系想固…