一、包的概念 |
包是go语言中不可缺少部分,在每个go源码的第一行进行定义,定义方式是:package "包名",并且该名称是作为调用该包时候所使用的名称。
包的概念总结:
- 每个 Go 文件都属于且仅属于一个包。一个包可以由许多以
.go
为扩展名的源文件组成,因此文件名和包名可能不同,为了规范,功能相似或者属于相同性质的源码归集到相同的包名中。 - 每个应用程序都必须有且只有一个包名称为main,他是该程序的入口,执行时候会寻找包名为main的代码
- 包与包之间可以被相互调用,主要为了减少代码重复性
- 包一旦被引入就需要被使用,除非引入的时候忽略它(前面加_表示忽略它,只是用它来初始化),如果引入了包,而在代码中没用使用,运行时候会报错
二、包的引入 |
1.包引入的方法
方法一:
import "fmt"
import "os"
方法二:
import "fmt"; import "os"
方法三(推荐!)
import (
"fmt"
"os"
)
2.引入其他包
go语言中,引入包的路径是根据GOPATH/src 这个环境变量作为相对路径进行引入的,如果GOPATH存在多个,那么go将逐一寻找路径,直到找到,若GOPATH/src未找到则编译出错。
示例:
我的GOPATH为:C:\Users\17647\Desktop\go_work\src
首先建立包文件1:C:\Users\17647\Desktop\go_work\src\day02\eg1\pkg.go(相对于GOPATH/src的路径为day02\eg1\pkg.go)
内容如下:
package add import "fmt" func Sum(a int,b int) {
var c int
c = a + b
fmt.Println("res",c) }
在main进行引入如下:
package main import (
"fmt"
"day02/eg1" /* 引入包 */
) func main() {
add.Sum(,) /* 调用包 */
fmt.Println("Hello, World!")
}
图示:
二、变量 |
1.单个变量的声明
go语言中,所有变量都必须先声明在使用,下面是声明变量和赋值方法:
- 先声明后赋值: var <变量名称> <变量类型> 赋值:变量的赋值格式: <变量名称> = <表达式>
- 声明的同时赋值:var <变量名称> <变量类型> = <表达式> (简写为 变量名称 := 表达式)
示例:
package main import "fmt"
func main() { var a string /* 声明一个变量名为a,类型为字符串的变量 */
a = "wd" /* 对a变量赋值*/
var age int = /* 声明并赋值变量 */
fmt.Println(a,age)
}
2.多个变量声明
- 先声明后赋值:var <变量1>,<变量2>,<变量3> <变量类型> 赋值 : <变量1>,<变量2> = 值1,值2
- 声明同时赋值 :var <变量1>,<变量2> = 值1,值2 可简写为: <变量1>,<变量2> = 值1,值2
- 多个变量还可以使用var()声明
示例:
package main import "fmt"
func main() { var a,b int
a,b = ,
var c,d = ,"wd" /* 类型自动推断 */
e, f := , "hello" /* 简写 */
fmt.Println(a,b,c,d,e,f)
}
使用var()声明
package main import "fmt" func main() {
var (
a int //默认值为0
b string // 默认值为空字符串("")
c =
)
fmt.Println(a,b,c)
}
3.变量名
命名原则:
- 首字符可以是任意的Unicode字符或者下划线
- 剩余字符可以是Unicode字符、下划线、数字
- 不能作为用以下关键字作为变量名
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
4.可见性
可见性即对包外可见,当其他包调用当前包的变量时候是否允许可见(可访问)。
- 变量开头字符大写,表示可见
- 变量开头字母非大写,则表示私有,不可见
5.变量的作用域
- 函数内定义的变量称为局部变量,其作用域在函数内
- 函数外定义的变量称为全局变量,作用于整个包,并且该变量首字母大写,则对其他包可见。
三、常量 |
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
定义常量语法:
const 名称 类型 = value
多个常量定义语法:
const (
a = //类型自动推倒
b =
c =
)
iota解释:
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
iota 可以被用作枚举值:
const (
a = iota
b = iota
c = iota
)
第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:
const (
a = iota
b
c
)
用法:
package main import "fmt" func main() {
const (
a = iota //
b //
c //
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
go语言之行--包与变量的更多相关文章
-
Go语言_包、变量和函数
包.变量和函数 学习 Go 程序的基本结构. Go 作者组编写,Go-zh 小组翻译. https://go-zh.org 包 每个 Go 程序都是由包构成的. 程序从 main 包开始运行. 本程序 ...
-
Go语言基础之包
Go语言基础之包 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的.本文介绍了Go语言中如何定义包.如何导出包的内容及如何导入其他包. Go语言的包(packag ...
-
GO学习-(15) Go语言基础之包
Go语言基础之包 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的.本文介绍了Go语言中如何定义包.如何导出包的内容及如何导入其他包. Go语言的包(packag ...
-
李洪强iOS开之【零基础学习iOS开发】【02-C语言】04-常量、变量
在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文字数据.用迅雷下载的文件数据等.这讲我们就来介绍C语言中数据的处理. 一.数据的存储 1.数据类型 ...
-
【嵌入式开发】C语言 命令行参数 函数指针 gdb调试
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...
-
R语言:recommenderlab包的总结与应用案例
R语言:recommenderlab包的总结与应用案例 1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算 ...
-
【转】Windows 平台下 Go 语言的安装和环境变量设置
1. Go 语言 SDK 安装包下载和安装 最新稳定版 1.5.3 安装包 go1.5.3.windows-amd64.msi下载地址 https://golang.org/dl/,大小约 69 MB ...
-
C语言 命令行参数 函数指针 gdb调试
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...
-
Windows 平台下 Go 语言的安装和环境变量设置
1. Go 语言 SDK 安装包下载和安装 最新稳定版 1.5.3 安装包 go1.5.3.windows-amd64.msi下载地址 https://golang.org/dl/,大小约 69 MB ...
随机推荐
-
基于FS4412的DS18B20温度采集编程实现(1-时序分析)
作者:秦老师,华清远见嵌入式学院讲师. 一.DS18B20简介 DS18B20是常用的数字温度计.DS18B20数字温度计提供9至12位(可配置)温度读数,表明该设备的温度. 信息通过单总线接口被发送 ...
-
iis https 客户端证书
1.自建根证书 makecert -r -pe -n "CN=WebSSLTestRoot" -b 12/22/2013 -e 12/23/2024 -ss root -sr lo ...
-
maven 跳过测试 打包 及上传命令
[main] ERROR org.apache.maven.cli.MavenCli - Failed to execute goal org.apache.maven.plugins:maven-s ...
-
Michael Kors成了时尚行业的公敌-股票频道-和讯网
Michael Kors成了时尚行业的公敌-股票频道-和讯网 Michael Kors成了时尚行业的公敌 字号 评论 邮件 纠错 2014年03月03日17:32 来源:财经天下 全球消费不 ...
-
复制(1)——SQLServer 复制简介
原文:复制(1)--SQLServer 复制简介 前言: SQLServer的复制技术最少从SQLServer2000时代已经出现,当初是为了分布式计算,不是为了高可用.但是到了今天,复制也成为了一种 ...
-
UITableView多层展开与收起
规则要求: tableview 有多层,类似于xcode文件目录的层级关系,每一个最开始展示的层姑且称之为根目录吧,并且,每个根目录下的层数不定. 与文件目录类似,每个目录下可以有不同层级的目录同时展 ...
-
python之常用模块学习
1.模块调用 import module from module import xx from module.xx.xx import xx as rename from module.xx.xx i ...
-
使用二进制安装包的方式单机部署MySQL8.0.13
使用二进制安装包的方式单机部署MySQL8.0.13 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于MySQL的介绍我这里就不多做赘述了,如何下载MySQL详情请参考:MySQ ...
-
Flask web开发之路十二
ge请求和post请求 ### get请求和post请求:1. get请求: * 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求. * 传参:get请求传参是放 ...
-
【三分】light bulb(zoj3203)
题目描述: 如图,你可以在房间里移动,灯泡的高度为H,你的身高为h,灯泡与墙的水平距离为D,求你影子的最长长度(影子长度=地上影子长度+墙上影子长度) 样例输入: 0.5 样例输出: 1.000 0. ...