HelloWorld与包引用

学习一门语言的惯例都是从helloworld开始,go语言也不例外

在gopath下的src中创建一个helloworld目录,创建main.go文件

package main    //包声明

import (    // 引用包
"fmt"
) func main() { //主函数
fmt.Println("HelloWorld")
}

helloworld很简单,但是其中也是有几个需要注意的地方的

  1. main函数,这个是一个go程序的主函数,整个程序的入口点

  2. 定义函数使用关键字"func"

  3. 除此之外还有两个关键字,"package"和"import"

    package是定义该文件属于哪个包的,一个文件只能属于一个包,main包是主函数所在的目录

    import后面接的是你要引用的包,有个要求就是要引用的这个包必须在gopath下的src路径下


可能有些难以理解

我们来尝试引用一下其它包中的函数

  1. 在我的gopath路径下的src目录下创建一个文件夹,命名为helloworld,再在该目录创建一个子目录,名为package1,在其中创建test1.go文件

    package package1    // 定义了这个文件属于package1这个包,也就是目录名
    
    import (
    "fmt"
    ) func PrintHello() { // 函数首字母大写,这样才能被外部调用
    fmt.Println("Hello World from package1")
    }

    这里需要注意的就是除了main包外,其它包的包名,应该等于目录的名字。

    其次,同意目录下的所有go文件中的包名应该一致,否则会报错

    一个文件中的常量、函数,如果想要被其它包中的文件引用,那么首字母需要大写

  2. 引用我们创建的package1这个包

    在helloworld这个目录下创建main.go文件

    package main    // 声明这个文件是属于main包的
    
    import (
    "helloworld/package1" //这里引用了其中的package1包
    ) func main() {
    package1.PrintHello() // 引用包中的函数
    }


引用包时,,还有几种不同的方式

import (
. "package1" // 前面加上点,这样在后面使用包中函数时就不需要在前面加上包名了
p "package1" // 前面可以设置一个别名,引用函数时使用这个别名即可
)

要点总结

  1. 一个go项目中必须有一个main包,且这个main包必须和main函数在同一层
  2. go语言使用package关键字来定义包,除了main包外,其余的包名通常就是所在的目录名
  3. 包中的常量、函数、结构体要想被外部调用,则必须首字母大写
  4. 你的项目本身必须在gopath下的src目录中,才能引用gopath中的包,其次,所有需要被引用的包也要放在该路径下,如本例中的helloworld目录就是在gopath下的src目录中
  5. 引用包时,使用的是相对于gopath下src目录的路径

1.go语言入门----Helloworld与包引用的更多相关文章

  1. Perl语言入门--1--perl的包安装

    A.  手工安装 从CPAN下载了DBI模块1.13版的压缩文件DBI-1.13.tar.gz.假设放在/usr/local/src(一般需要编译安装的软件,都放在此目录下安装). # cd /usr ...

  2. go语言的安装和配置,以及包引用

    1.下载和安装 首先大家可以去官网下载 http://golang.org/dl/ 如果官网你看不懂的话,可以到这里下载: http://golangtc.com/download ,这里也提供了百度 ...

  3. Go 语言入门(一)基础语法

    写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(一 ...

  4. 【Go语言入门系列】Go语言工作目录介绍及命令工具的使用

    [Go语言入门系列]前面的文章: [保姆级教程]手把手教你进行Go语言环境安装及相关VSCode配置 [Go语言入门系列](八)Go语言是不是面向对象语言? [Go语言入门系列](九)写这些就是为了搞 ...

  5. RabbitMQ学习总结 第二篇:快速入门HelloWorld

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  6. Swift语言入门之旅

    Swift语言入门之旅  学习一门新的计算机语言,传统来说都是从编写一个在屏幕上打印"Hello world"的程序開始的.那在 Swift,我们使用一句话来实现它: printl ...

  7. PBFT概念与Go语言入门(Tendermint基础)

    Tendermint作为当前最知名且实用的PBFT框架,网上资料并不很多,而实现Tendermint和以太坊的Go语言,由于相对小众,也存在资料匮乏和模糊错漏的问题.本文简单介绍PBFT概念和Go语言 ...

  8. Go 语言入门(二)方法和接口

    写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(二 ...

  9. 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...

随机推荐

  1. Dos命令思维导图

    通过思维导图的方式,总结常用Dos命令. 各种思维导图下载地址

  2. python模块----paramicko模块 (ssh远程主机并命令或传文件)

    paramiko模块 paramicko模块是非标准库模块,需要pip下载 paramicko:模拟ssh登陆linux主机,也有上传下载功能.ansible自动化部署软件底层就有应用paramick ...

  3. Java工作中的并发问题处理方法总结

    Java工作中常见的并发问题处理方法总结 好像挺久没有写博客了,趁着这段时间比较闲,特来总结一下在业务系统开发过程中遇到的并发问题及解决办法,希望能帮到大家 问题复现 1. "设备Aの奇怪分 ...

  4. AtCoder Beginner Contest 174

    第一次 ak ABC,纪念一下. 比赛链接:https://atcoder.jp/contests/abc174 A - Air Conditioner #include <bits/stdc+ ...

  5. 【noi 2.6_9280】&【bzoj 1089】严格n元树(DP+高精度+重载运算符)

    题意:定义一棵树的所有非叶节点都恰好有n个儿子为严格n元树.问深度为d的严格n元树数目. 解法:f[i]表示深度为<=i的严格n元树数目.f[i]-f[i-1]表示深度为i的严格n元树数目.f[ ...

  6. 【noi 2.6_6252】带通配符的字符串匹配(DP)

    题意:给出一个带有通配符("?"可以代替一个字符,"*"可以代替零个或多个字符)的a字符串和一个不带通配符的b字符串,判断他们是否能够匹配. 解法:f[i][j ...

  7. hdu 13394 Minimum Inversion Number 线段树

    题意: 首先给你一个长度为n的序列v,你需要首先找出来逆序对(i<j && v[i]>v[j]) 然后把这个序列的最后一个元素放在第一个位置上,其他元素都向后移动一位. 一 ...

  8. hdu4521 小明系列问题——小明序列

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission ...

  9. js--执行上下文和作用域相关问题

    前言 如果你是或者你想成为一名合格的前端开发工作者,你必须知道JavaScript代码在执行过程,知道执行上下文.作用域.变量提升等相关概念,并且熟练应用到自己的代码中.本文参考了你不知道的JavaS ...

  10. Unknown command '\b'. 关于Mysql导入外部数据库脚本报错的解决

    来自网络转载 还是字符集的问题 使用source导入外部sql文件: mysql> source F:\php\bookorama.sql;--------------source F:---- ...