1.go语言入门----Helloworld与包引用
HelloWorld与包引用
学习一门语言的惯例都是从helloworld开始,go语言也不例外
在gopath下的src中创建一个helloworld目录,创建main.go文件
package main //包声明
import ( // 引用包
"fmt"
)
func main() { //主函数
fmt.Println("HelloWorld")
}
helloworld很简单,但是其中也是有几个需要注意的地方的
main函数,这个是一个go程序的主函数,整个程序的入口点
定义函数使用关键字"func"
除此之外还有两个关键字,"package"和"import"
package是定义该文件属于哪个包的,一个文件只能属于一个包,main包是主函数所在的目录
import后面接的是你要引用的包,有个要求就是要引用的这个包必须在gopath下的src路径下
可能有些难以理解
我们来尝试引用一下其它包中的函数
在我的gopath路径下的src目录下创建一个文件夹,命名为helloworld,再在该目录创建一个子目录,名为package1,在其中创建test1.go文件
package package1 // 定义了这个文件属于package1这个包,也就是目录名 import (
"fmt"
) func PrintHello() { // 函数首字母大写,这样才能被外部调用
fmt.Println("Hello World from package1")
}
这里需要注意的就是除了main包外,其它包的包名,应该等于目录的名字。
其次,同意目录下的所有go文件中的包名应该一致,否则会报错
一个文件中的常量、函数,如果想要被其它包中的文件引用,那么首字母需要大写
引用我们创建的package1这个包
在helloworld这个目录下创建main.go文件
package main // 声明这个文件是属于main包的 import (
"helloworld/package1" //这里引用了其中的package1包
) func main() {
package1.PrintHello() // 引用包中的函数
}
引用包时,,还有几种不同的方式
import (
. "package1" // 前面加上点,这样在后面使用包中函数时就不需要在前面加上包名了
p "package1" // 前面可以设置一个别名,引用函数时使用这个别名即可
)
要点总结
- 一个go项目中必须有一个main包,且这个main包必须和main函数在同一层
- go语言使用package关键字来定义包,除了main包外,其余的包名通常就是所在的目录名
- 包中的常量、函数、结构体要想被外部调用,则必须首字母大写
- 你的项目本身必须在gopath下的src目录中,才能引用gopath中的包,其次,所有需要被引用的包也要放在该路径下,如本例中的helloworld目录就是在gopath下的src目录中
- 引用包时,使用的是相对于gopath下src目录的路径
1.go语言入门----Helloworld与包引用的更多相关文章
- Perl语言入门--1--perl的包安装
A. 手工安装 从CPAN下载了DBI模块1.13版的压缩文件DBI-1.13.tar.gz.假设放在/usr/local/src(一般需要编译安装的软件,都放在此目录下安装). # cd /usr ...
- go语言的安装和配置,以及包引用
1.下载和安装 首先大家可以去官网下载 http://golang.org/dl/ 如果官网你看不懂的话,可以到这里下载: http://golangtc.com/download ,这里也提供了百度 ...
- Go 语言入门(一)基础语法
写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(一 ...
- 【Go语言入门系列】Go语言工作目录介绍及命令工具的使用
[Go语言入门系列]前面的文章: [保姆级教程]手把手教你进行Go语言环境安装及相关VSCode配置 [Go语言入门系列](八)Go语言是不是面向对象语言? [Go语言入门系列](九)写这些就是为了搞 ...
- RabbitMQ学习总结 第二篇:快速入门HelloWorld
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- Swift语言入门之旅
Swift语言入门之旅 学习一门新的计算机语言,传统来说都是从编写一个在屏幕上打印"Hello world"的程序開始的.那在 Swift,我们使用一句话来实现它: printl ...
- PBFT概念与Go语言入门(Tendermint基础)
Tendermint作为当前最知名且实用的PBFT框架,网上资料并不很多,而实现Tendermint和以太坊的Go语言,由于相对小众,也存在资料匮乏和模糊错漏的问题.本文简单介绍PBFT概念和Go语言 ...
- Go 语言入门(二)方法和接口
写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(二 ...
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...
随机推荐
- 正则表达式获取字符串的input标签的属性值
直接上正则表达式: (?<=\<input.*value=\").*?(?=\") 字符串如下: <form action="https://www.b ...
- Kubernetes --(k8s) service
service Kubernete Service 是一个定义了一组Pod的策略的抽象,我们也有时候叫做宏观服务.这些被服务标记的Pod都是(一般)通过label Selector决定的 对于Kube ...
- [源码分析] Dynomite 分布式存储引擎 之 DynoJedisClient(1)
[源码分析] Dynomite 分布式存储引擎 之 DynoJedisClient(1) 目录 [源码分析] Dynomite 分布式存储引擎 之 DynoJedisClient(1) 0x00 摘要 ...
- charles(2)MAC Charles关闭后无法上网
前言 charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可 解决方法 1 打开网络偏好设置, ...
- hdu5662 YJQQQAQ and the function (单调栈)
Problem Description YJQQQAQ has an array A of length n. He defines a function fl,r,k where l,r,k are ...
- poj1061青蛙的约会 (扩展欧几里德)
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- AcWing 243. 一个简单的整数问题2 (树状数组,区间更新/询问)
题意:区间更新,区间询问. 题解;对于区间更新,我们还是用差分数组\(b_i\)来更新,区间询问时,我们的答案是:\(\sum_{i=l}^{r}\sum_{j=1}^{i}b_j\), 所以,我们搞 ...
- Hyper-V安装CentOS修改分辨率
grubby --update-kernel=ALL --args="video=hyperv_fb:1600x900" reboot https://blog.csdn.net/ ...
- Centos7 搭建Nginx+rtmp+hls直播推流服务器
1 准备工具 使用yum安装git [root~]# yum -y install git 下载nginx-rtmp-module,官方github地址 // 通过git clone 的方式下载到服务 ...
- 国产网络损伤仪SandStorm -- 为什么数据流还是走Bypass链路?
如果你在使用网络损伤仪SandStorm测试移动互联网的应用程序或者在仿真所谓"弱网测试"的时候,发现所有的数据流还是在走Bypass链路,并没有预期地走自己创建的仿真链路,那么你 ...