当前位置: 首页 > news >正文

焦作网站建设费用中国新闻社官网招聘

焦作网站建设费用,中国新闻社官网招聘,百度灰色关键词代发,做违法网站会怎样Go语言中变量的声明和JavaScript很像#xff0c;使用var关键字#xff0c;变量的声明、定义有好几种形式 变量和常量 // 声明并初始化一个变量 var m int 10 // 声明初始化多个变量 var i, j, k 1, 2, 3 // 多个变量的声明(注意小括号的使用) var(no intname string ) //…Go语言中变量的声明和JavaScript很像使用var关键字变量的声明、定义有好几种形式 变量和常量 // 声明并初始化一个变量 var m int 10 // 声明初始化多个变量 var i, j, k 1, 2, 3 // 多个变量的声明(注意小括号的使用) var(no intname string ) // 声明时不指明类型通过初始化值来推导 var b true // bool型 // : 隐含声明变量并赋值 str : mimvp.com // 等价于var str string mimvp.comGo 语言中 和 : 有什么区别 是赋值 : 是声明变量并赋值 // 使用必须使用先var声明例如 var a a 100 // 或 var b 100 // 或 var c int 100 // : 是声明并赋值并且系统自动推断类型不需要var关键字 d : 100 // 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). 定义多个常量时也可用下面方式 const ( constName1 [type] val1 constName2 [type] val2 )示例代码 /** * mimvp.com * 2017.1.20 */ // 声明当前文件所属的包名main是一个可独立运行的包编译后会生成可执行文件 package main import fmt // 导入包 var id 123456 /* id2 : 654321 // 在函数外用 : 编译时会出现错误局部变量声明应在函数内部 // non-declaration statement outside function body */ const PI 3.14 // 常量声明 // 每个可独立运行的程序都包含入口函数 main 与其他语言相同但无参数和返回值 func main() { var num int num 100 fmt.Println(num) // 输出 100 var num1, num2 int num1, num2 1, 2 fmt.Println(num1, num2) // 输出 1 2 var no1, no2 3, 4 fmt.Println(no1, no2) // 输出 3 4 n1, n2 : 5, 6 fmt.Println(n1, n2) // 输出 5 6 _, n : 7, 8 fmt.Println(n) // 输出 8 var ( key1 string key2 string ) key1, key2 k1, k2fmt.Println(key1, key2) // 输出 k1 k2 var ( a 9 b 10 ) fmt.Println(a, b) // 输出 9 10 fmt.Println(id) // 输出 123456 fmt.Println(PI) // 输出 3.14 /* PI 3.1415 // 改变常量的值编译会出现错误 // cannot assign to PI // cannot use 3.1415 (type float64) as type ideal in assignment */ }函数使用 1Go语言函数格式 func GetMsg(i int) (str string) {fmt.Println(i)str hello mimvp.comreturn str }解释说明 func 说明这是个函数 GetMsg是函数名 (i int) 函数接收一个int参数是传入参数 (str string) 函数返回一个string类型返回值是返回参数 2Go语言函数可返回多个值 函数返回多个值跟Java、PHP、C等主流语言都不一样但和Python、lua等脚本语言是一样的 span stylecolor:#0000FF;vim mimvp_func.go/span func GetMsg(i int) (str string, err string) {fmt.Println(i)str hello mimvp.comerr no errreturn str, err } func main() {fmt.Println(GetMsg(100))编译执行 $ go build mimvp_func.go $ ./mimvp_func 100 hello mimvp.com no err3defer的使用 defer的意思是在函数退出时调用特别用于对文件进行读写操作的时候需要在open之后要调用close操作将close操作使用defer func ReadFile(filePath string)(){file.Open(filePath)defer file.Close()if true {file.Read()} else {return false} }上述代码含义是在file.Open后不立即调用close当return false的时候调用file.Close()这样就有效避免了C语言中的内存泄露问题。 4理解 panicrecover 上面讲述了很多变量和函数还没介绍 throw - try - catch 的用法 Go语言里Panic和Recover就是其他语言中的throw和catch 示例代码 package main import fmt func main() {f()fmt.Println(Returned normally from f.) } func f() {defer func() {if r : recover(); r ! nil {fmt.Println(Recovered in f, r)}}()fmt.Println(Calling g.)g(0)fmt.Println(Returned normally from g.) } func g(i int) {if i 3 {fmt.Println(Panicking!)panic(fmt.Sprintf(%v, i))}defer fmt.Println(Defer in g, i)fmt.Println(Printing in g, i)g(i 1) }运行结果 $ ./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 Socks5代理服务器 package main import (netfmtiobytesencoding/binary ) type Methods struct{ver, nmethods uint8methods uint8 } type sock5cmd struct{ver, cmd, rsv, atyp uint8dst [255]uint8 } type proxyCoder struct {conn net.Conn } func (c *proxyCoder) readMethods() Methods {var m Methodsb : make([]byte, 1024)n, err : c.conn.Read(b)if err ! nil err ! io.EOF { panic(err) }buf : bytes.NewBuffer(b[0:n])err binary.Read(buf, binary.LittleEndian, m.ver)if err ! nil {fmt.Println(binary.Read failed:, err)}err binary.Read(buf, binary.LittleEndian, m.nmethods)if err ! nil {fmt.Println(binary.Read failed:, err)}err binary.Read(buf, binary.BigEndian, m.methods)if err ! nil {fmt.Println(binary.Read failed:, err)}return m } func (c *proxyCoder) returnMethod() {buf : make([]byte, 2)buf[0] 5buf[1] 0c.conn.Write(buf)fmt.Println(buf) } func (c *proxyCoder) serve() {buf : make([]byte, 128)n, err : c.conn.Read(buf)if err ! nil err ! io.EOF { panic(err) }fmt.Println(buf[:n])var s stringvar t stringvar i intif(buf[3] 3){//domailfor i 4; i n-2; i {s fmt.Sprintf(%c, buf[i])}} else {//ip4 or ip6s fmt.Sprintf(%d, buf[4])for i 5; i n-2; i {s fmt.Sprintf(.%d, buf[i])}}p : make([]byte, 2)var port uint16p[1] buf[n-1]p[0] buf[n-2]b : bytes.NewBuffer(p)err binary.Read(b, binary.BigEndian, port)if err ! nil {fmt.Println(binary.Read failed:, err)}s fmt.Sprintf(:%d, port)switch buf[1] {case 1://TCPt tcpcase 2://BINDcase 3://UDPt udp}conn, err : net.Dial(t, s)if err ! nil {fmt.Printf(%s connect error %s\n, t, s)buf[1] 4c.conn.Write(buf[:n])c.conn.Close()return}buf[1] 0c.conn.Write(buf[:n])fmt.Printf(%s connect success %s\n, t, s)go serv(conn, c.conn)go serv(c.conn, conn) } func serv(in net.Conn, out net.Conn){b : make([]byte, 10240)for ;;{n, err : in.Read(b)if( err ! nil ){fmt.Printf(close\n)in.Close()out.Close()return}fmt.Printf(serv %d\n, n)out.Write(b[:n]);} } type Proxy struct { } func NewProxy() *Proxy {return Proxy{} } var DefaultProxy NewProxy() func (p *Proxy) ProxyConn(conn net.Conn ){c : proxyCoder{conn}m : c.readMethods()fmt.Println(m)c.returnMethod()c.serve() } func handleConnection(conn net.Conn){buf : make([]byte, 1024)n, err : conn.Read(buf)if err ! nil err ! io.EOF { panic(err) }fmt.Println(buf[:n])//answerbuf[0] 5buf[1] 0conn.Write(buf[:2])fmt.Println(buf[:2])//serven, err conn.Read(buf)if err ! nil err ! io.EOF { panic(err) }fmt.Println(buf[:n])conn.Close() } func main() {![请添加图片描述](https://img-blog.csdnimg.cn/94ca1460a5d9411ea13b9a4f63aa3c30.png)ln, err : net.Listen(tcp, :1080)if err ! nil {fmt.Printf(bind error\n)return}for {conn, err : ln.Accept()if err ! nil {fmt.Printf(accept error\n)continue}go DefaultProxy.ProxyConn(conn)//go handleConnection(conn)} }
http://www.dnsts.com.cn/news/178762.html

相关文章:

  • 网站制作者免费引流软件下载
  • 青岛做企业网站重庆地区专业做网站的公司
  • html链接网站模板友点企业网站模板下载
  • 门户网站网页设计柳州建设网官网
  • 沧州网站制作营销网站建设选择原则
  • 泰州整站优化购物网站设计的意义
  • 网站建设灬金手指下拉十四wordpress qq主题
  • 开源php网站开发app界面设计网站
  • 西宁市建设局网站哪里有网站建设中心
  • asp后台怎么加载网站男女激烈做羞羞事网站网站韩剧
  • 建网站几个按钮jsp网站开发详解 赵增敏
  • 新手建设网站德国 网站建设
  • 印江建设局网站做网站钱
  • 黄岛开发区网站制作wordpress页面模板怎么做
  • 五金塑胶 技术支持 东莞网站建设如何自己开发一个自己的网站
  • html电影网站模板wordpress页面排序
  • 丹阳网站建设制作如何修改用织梦做的网站的模板
  • 西安做网站微信公司青岛seo推广专员
  • 网络网站建设属于什么费用优化方案电子版
  • 温州cms建站系统网站域名多少钱一年
  • 什么是网站二级目录手机app下载免费安装
  • 成都市建设领域网站咨询电话网站关键词筛选
  • 网站首页怎么制作过程如何做网站链接使用
  • 做爰在线观看网站三合一网站源码
  • 网站加入百度广告联盟手机网站的引导页
  • 互动网门户网站建设wordpress设置恢复
  • 如何做网站聚合页万能网址大全
  • 机票网站制作查询网站哪做的
  • 宿迁哪家做网站好百度推广有效果吗?
  • 网站空间怎么选择网站怎么seo