Go语言的变量、函数、Socks5代理服务器
2017-09-29 14:40
246 查看
转载一下留着自己看
Go语言中变量的声明和JavaScript很像,使用var关键字,变量的声明、定义有好几种形式
1. 变量和常量
// 声明并初始化一个变量
var m int = 10
// 声明初始化多个变量
var i, j, k = 1, 2, 3
// 多个变量的声明(注意小括号的使用)
var(
no int
name string
)
// 声明时不指明类型,通过初始化值来推导
var b = true // bool型
// := 隐含声明变量并赋值
str := "mimvp.com" // 等价于var str string = "mimvp.com"
Go 语言中 = 和 := 有什么区别?
= 是赋值, := 是声明变量并赋值
// Go中有一个特殊的变量下划线"_" 表示任何赋给它的值将被丢弃
Go语言的编译器,对声明却未使用的变量在报错,因此变量声明了就必须使用,如果要使用变量也必须先声明
Go语言和C语言一样,Go语言中也是使用分号来终结语句。但是和C语言不同的是,Go语言的词法分析器在扫描源代码的过程中使用简单的规则自动插入分号,因此在编写源代码的多数时候就不需要加分号了
Go语言词法分析器插入分号的规则:如果在一个新行前方的最后一个标记是一个标识符(包括像int和float64这样的单词)、一个基本的如数值这样的文字、或以下标记中的一个时,会自动插入分号
Go语言通常仅在for语句中使用分号,以此来分开初始化器、添加和增量。还有一种情况就是当你在一行中写了多个语句,也需要使用分号来分开
由于Go语言词法分析器添加分号的特殊性,所以在有些情况下需要注意:
你都不应该将一个控制结构(if、for、switch或select)的左大括号放在下一行。
如果这样做,将会在大括号的前方插入一个分号,这可能导致出现不想要的结果。
常量:在程序不能被改变的值,一般都定义为数值,布尔值,字符串等
格式:const constName [type] = val
1). var num = 3 // 实际上 3 也称为常量
2). 格式中 val 可以是表达式,但不能为运行时才能知道结果的表达式
3). 预定义常量: true / false / iota
4). 定义多个常量时,也可用下面方式
示例代码:
2. 函数使用
1)Go语言函数格式
解释说明:
func 说明这是个函数
GetMsg是函数名
(i int) 函数接收一个int参数,是传入参数
(str string) 函数返回一个string类型返回值,是返回参数
2)Go语言函数可返回多个值
函数返回多个值,跟Java、PHP、C等主流语言都不一样,但和Python、lua等脚本语言是一样的
编译执行:
$ go build mimvp_func.go
$ ./mimvp_func
100
hello mimvp.com no err
3)defer的使用
defer的意思是"在函数退出时调用",特别用于对文件进行读写操作的时候,需要在open之后要调用close操作,将close操作使用defer
上述代码含义是在file.Open后不立即调用close,当return false的时候调用file.Close(),这样就有效避免了C语言中的内存泄露问题。
4)理解 panic,recover
上面讲述了很多变量和函数,还没介绍 throw - try - catch 的用法
Go语言里,Panic和Recover就是其他语言中的throw和catch
示例代码:
运行结果:
$ ./mimvp-try-catch
Calling g.
Printing in g 0
Printing in g 1
Printing in g 2
Printing in g 3
Panicking!
Defer in g 3
Defer in g 2
Defer in g 1
Defer in g 0
Recovered in f 4
Returned normally from f.
Panic抛出了信息,并且跳出函数。Recover接受到了信息,并且继续处理。
这个例子理解了基本就掌握了Recover和Panic
3. Socks5代理服务器
Go语言中变量的声明和JavaScript很像,使用var关键字,变量的声明、定义有好几种形式
1. 变量和常量
// 声明并初始化一个变量
var m int = 10
// 声明初始化多个变量
var i, j, k = 1, 2, 3
// 多个变量的声明(注意小括号的使用)
var(
no int
name string
)
// 声明时不指明类型,通过初始化值来推导
var b = true // bool型
// := 隐含声明变量并赋值
str := "mimvp.com" // 等价于var str string = "mimvp.com"
Go 语言中 = 和 := 有什么区别?
= 是赋值, := 是声明变量并赋值
_, Ret:= 2, 3 // 2赋值被丢弃
Go语言的编译器,对声明却未使用的变量在报错,因此变量声明了就必须使用,如果要使用变量也必须先声明
Go语言和C语言一样,Go语言中也是使用分号来终结语句。但是和C语言不同的是,Go语言的词法分析器在扫描源代码的过程中使用简单的规则自动插入分号,因此在编写源代码的多数时候就不需要加分号了
Go语言词法分析器插入分号的规则:如果在一个新行前方的最后一个标记是一个标识符(包括像int和float64这样的单词)、一个基本的如数值这样的文字、或以下标记中的一个时,会自动插入分号
Go语言通常仅在for语句中使用分号,以此来分开初始化器、添加和增量。还有一种情况就是当你在一行中写了多个语句,也需要使用分号来分开
由于Go语言词法分析器添加分号的特殊性,所以在有些情况下需要注意:
你都不应该将一个控制结构(if、for、switch或select)的左大括号放在下一行。
如果这样做,将会在大括号的前方插入一个分号,这可能导致出现不想要的结果。
常量:在程序不能被改变的值,一般都定义为数值,布尔值,字符串等
格式:const constName [type] = val
1). var num = 3 // 实际上 3 也称为常量
2). 格式中 val 可以是表达式,但不能为运行时才能知道结果的表达式
3). 预定义常量: true / false / iota
4). 定义多个常量时,也可用下面方式
1)Go语言函数格式
func 说明这是个函数
GetMsg是函数名
(i int) 函数接收一个int参数,是传入参数
(str string) 函数返回一个string类型返回值,是返回参数
2)Go语言函数可返回多个值
函数返回多个值,跟Java、PHP、C等主流语言都不一样,但和Python、lua等脚本语言是一样的
$ go build mimvp_func.go
$ ./mimvp_func
100
hello mimvp.com no err
3)defer的使用
defer的意思是"在函数退出时调用",特别用于对文件进行读写操作的时候,需要在open之后要调用close操作,将close操作使用defer
4)理解 panic,recover
上面讲述了很多变量和函数,还没介绍 throw - try - catch 的用法
Go语言里,Panic和Recover就是其他语言中的throw和catch
示例代码:
$ ./mimvp-try-catch
Calling g.
Printing in g 0
Printing in g 1
Printing in g 2
Printing in g 3
Panicking!
Defer in g 3
Defer in g 2
Defer in g 1
Defer in g 0
Recovered in f 4
Returned normally from f.
Panic抛出了信息,并且跳出函数。Recover接受到了信息,并且继续处理。
这个例子理解了基本就掌握了Recover和Panic
3. Socks5代理服务器
相关文章推荐
- Go语言的变量、函数、Socks5代理服务器示例详解
- Go语言的变量、函数、Socks5代理服务器
- go语言中将函数作为变量传递
- 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)
- go语言闭包,匿名函数,变量使用
- C程序设计语言- 函数与程序结构-3.1----函数的基本知识、外部变量、作用域规则、头文件
- C语言基础知识——常变量以及输入输出函数
- Go语言学习笔记之函数(function)
- 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)
- go语言简单的处理http请求的函数实例
- Go语言学习笔记 --- 常量、变量、批量定义与声明、数据类型、类型别名、类型转换
- GO语言如何调用C写的函数
- Go语言:变量声明,作用域,指针
- Go语言实现的一个简单Web服务器
- Go语言实现简单的一个静态WEB服务器
- go语言学习-变量定义自动推导
- C语言中,如何通过函数来改变一个变量的值
- PHP获取当前url路径的函数及服务器变量:QUERY_STRING、REQUEST_URI、SCRIPT...
- go语言之行--包与变量
- Go编程——变量、函数导出与首字母大写