go语言学习之包和变量详解
作者:W-D 发布时间:2024-04-26 17:29:27
前言
本文主要介绍了关于go语言之包和变量的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
一、包的概念
包是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(2,3) /* 调用包 */
fmt.Println("Hello, World!")
}
图示:
二、变量
1.单个变量的声明
go语言中,所有变量都必须先声明在使用,下面是声明变量和赋值方法:
先声明后赋值: var <变量名称> <变量类型> 赋值:变量的赋值格式: <变量名称> = <表达式>
声明的同时赋值:var <变量名称> <变量类型> = <表达式> (简写为 变量名称 := 表达式)
示例:
package main
import "fmt"
func main() {
var a string /* 声明一个变量名为a,类型为字符串的变量 */
a = "wd" /* 对a变量赋值*/
var age int = 22 /* 声明并赋值变量 */
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 = 1,2
var c,d = 3,"wd" /* 类型自动推断 */
e, f := 4, "hello" /* 简写 */
fmt.Println(a,b,c,d,e,f)
}
使用var()声明
package main
import "fmt"
func main() {
var (
a int //默认值为0
b string // 默认值为空字符串("")
c = 3
)
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 = 0 //类型自动推倒
b = 1
c = 2
)
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 //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
来源:http://www.cnblogs.com/wdliu/p/9175815.html


猜你喜欢
- 凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头。做过S
- 目录前言cv2.drawMarker()函数说明参数说明利用鼠标回调函数交互式画点例1,简单的例子例2,删除功能总结前言这里所谓画点的意思是
- 1.如果有ID字段,就是具有唯一性的字段 代码如下:delect table where id not in ( select max(id
- 1. 一个简单的字典我们先从写一个简单的字典示例开始,顺便看一下 python 字典的语法。student ={'姓名':&
- 图像在计算机中的存储图像其实就是一个像素值组成的矩阵。1、黑白或灰度图像如何存储在计算机中在这里,我们已经采取了黑白图像,也被称为一个灰度图
- 今天在看见了一堆不错的非洲的web 2.0网站的Logo,于大家一起欣赏:非洲web2.0网站的logo大部分和平时看见的web2.0网站l
- 前言首先是本文总体代码,改一下图像的读取路径就可以运行了,但我还是建议大家先看后面的步骤一行行敲代码,这样效果更好:""
- 作为Python开发者,你迟早都会用到图形用户界面来开发应用。本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好
- 描述max() 方法返回给定参数的最大值,参数可以为序列。语法以下是 max() 方法的语法:max( x, y, z, .... )参数x
- 编这个程序是想过节过年,一些重要的纪念日,给亲戚好友发祝福之类的,但要凌晨0点才显得比较有诚意,可我又比较贪睡,常常忘了,所以就有了编个微信
- 一、基础内容import tkinter as tkfrom PIL import Image,ImageTkdef my():  
- FSO中除了可以对驱动器、文件夹的操作以外,功能最强大的就是对文件的操作了。它可以用来记数、内容管理、搜索还可生成动态HTML页面等等。一、
- 可以在Mac OS X 10.2.x(“Jaguar”)和以上版本上Mac OS X使用二进制安装软
- 最近用了pycharm,感觉还不错,就是pandas中Series、DataFrame的plot()方法不显示图片就给我结束了,但是我在ip
- 本文实例为大家分享了OpenCV实现直线检测的具体代码,供大家参考,具体内容如下1 介绍本文主要介绍OpenCV自带的直线检测函数Hough
- int 数字python 有3种数字类型int: 整数类型float: 浮点类型complex: 复数类型int类型#Int或整数是完整的数
- 本文实例讲述了django框架cookie和session用法。分享给大家供大家参考,具体如下:首先知道http协议http协议它是无状态的
- 一、AIML是什么AIML全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创
- 用法:注意是用英文的逗号",",且之间没有空格。文件名,[工作表名称,不写则默认当前激活的表],[从第几行开始,不写则默
- 有需要的人可以参考一下,如果试用过,发现问题,欢迎留言告知,不胜感激。功能介绍:1、若页面无刷新,且第一次传值小于第二次传值或者圆环初始化时