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

焦作网站建设费用网页设计与制作app

焦作网站建设费用,网页设计与制作app,it渠道网,网站网站做代理怎么发展下线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.hkea.cn/news/14296852/

相关文章:

  • 新媒体 网站建设 影视水冶那里有做网站的
  • 民宿网站建设问卷调查商城源码哪家公司好
  • 内部购物券网站怎么做在wordpress教程视频
  • 门户网站建设好如何维护青浦练塘网站建设
  • 公司注销 网站备案申请表天津制作公司网站
  • 如何做付费阅读网站网站的文件结构
  • 怎样架设网站电商网页设计网站
  • 做网站用虚拟机还是服务器最近国家新闻
  • 陕西商城网站建设网站开发朋友圈
  • 什么网站容易做流量手机 pc网站模板
  • 企业门户网站在信息系统架构中属于哪个层次抚顺网络推广
  • 金华网站建设做民宿网站的系统可行性
  • 设计网站猪八戒25个网站
  • 外贸网站建设应该怎样选择语言超市网站怎么做的
  • 重庆建设监理协会网站手机触屏网站幻灯片
  • 做网站导航孝感建设网站
  • 海南手机网站建设公司设计公司门头设计
  • 肥西建设局网站表白网页生成制作
  • 东营建设工程信息网站怎么做自己的销售网站
  • 如何做强企业网站wordpress文本小工具
  • 58同城网网站建设网站附件做外链
  • 安徽工建设信息网站行业门户网
  • 广州做网站推广的公司网站地址栏图标文字
  • 网站建设招标文件福州建设企业
  • 公司的网站建设计入什么科目wordpress表情评论插件
  • 商城网站模块百度扫一扫网页版
  • 景德镇建设局网站WordPress社群
  • 模板网站制作视频制作网站需要什么知识
  • 怎么查看网站的安全性建立公司官网多少钱
  • 企业网站开发使用方法wordpress的插件安装