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

医院网站队伍建设武汉网站推广排名

医院网站队伍建设,武汉网站推广排名,合肥房产交易网,wordpress标签tagurlGo学习-Day10 个人博客:CSDN博客 反射 编写函数适配器,序列化和反序列话可以用到 反射可以在运行时,动态获取变量的各种信息,例如类型,结构体本身的信息,修改变量的值,调用关联的方法 反射是…

Go学习-Day10

  • 个人博客:CSDN博客

反射

  • 编写函数适配器,序列化和反序列话可以用到

  • 反射可以在运行时,动态获取变量的各种信息,例如类型,结构体本身的信息,修改变量的值,调用关联的方法

  • 反射是不是和映射相反?是一种逆函数?

  • 变量到空接口相互转换,空接口和reflect.value相互转换

  • 动手一下

  • import ("fmt""reflect"
    )func test(a interface{}) {b := reflect.TypeOf(a)fmt.Println(b)
    }func main() {var a int = 10test(a)
    }
    
  • 打印 “int”

  • reflect.TypeOf()//从接口获取原类型
    reflect.ValueOf()//从接口获取reflect.Value类型.Int能取到具体的类型
    //如果需要原类型,需要类型断言
    reflect.Interface//把reflect.Value转换成空接口
    
  • Kind是大的种类,Type是小的类型

  • 常量在定义的时候必须初始化

  • reflect.Value.Kind返回的是常量

  • 如果传入指针类型的话(反射常常需要改变原来的值)指针类型需要.Elem方法取到值,再用.SetInt之类的方修改原来的值

  • Value//指reflect.Value
    Value.NumField()//获取字段数
    Value.Field()//根据下标,获取第几个字段,返回的也是relect.Value
    Tpye//指reflect.Type
    Tpye.Field().Tag.Get("key")//可以获取tag,键值是结构体里面设置的例如,"json:"的key就是json,序列化反序列化的键值固定取json,其实可以自定义
    Value.NumMethod()//获取方法数
    Value.Method().Call(...)//获取第几个方法,然后调用
    //这个顺序是按照函数名字典序排列的,Call传的是Value切片,返回的也是Value切片
    //输入的时候需要定义一个Value切片,用reflect.ValueOf(xx)插入这个切片
    Value.Elem().Field().SetXxx//修改字段
    ...FieldByName()//可以用字段名来找
    Value.New()//为指针申请空间,可以通过反射来创建类型
    

网络编程

  • Golang的主要设计目标之一就是面向大规模的后端服务程序,网络通信是服务端程序必不可少的一部分
  • 网络编程有两种 TCP(Transmission Control Protocol) socket编程和HTTP编程(建立在前者之上)
  • 做服务器尽量少开端口,一个端口只能被一个程序监听

监听端口小Demo

  • net包提供了可以指的I/O接口

  • package mainimport ("fmt""net"
    )func main() {fmt.Println("开始监听")//使用tcp协议,监听本机listen, err := net.Listen("tcp", "0.0.0.0:8888")if err != nil {fmt.Println("err=", err)}//延迟关闭defer listen.Close()//循环等待for {//等待客户端连接fmt.Println("等待连接...")//获取连接conn, err := listen.Accept()if err != nil {fmt.Println("err=", err)} else {fmt.Println("con=", conn)}//起一个协程为客户端服务}
    }
  • 用telnet呼叫一下 telnet 127.0.0.1 8888

  • 开始监听
    等待连接...
    con= &{{0xc00010ec80}}
    等待连接...
    //返回
    

客户端

  • conn, err := net.Dial("tcp", "ip...:端口")
    //获取连接
    //Dial是拨号的意思
    
  • 通过端口就能和对应的程序进行交流

  • func main() {conn, err := net.Dial("tcp", "127.0.0.1:8888")if err != nil {fmt.Println("err=", err)}fmt.Println("连接成功conn=", conn)
    }
    //注意此时要开着上面的监听程序
    //输出 连接成功conn= &{{0xc00010ca00}}

发送&&接收

server.go

package mainimport ("fmt""net"
)func process(conn net.Conn) {//连接过多不关闭的话就会导致其他连接无法成功defer conn.Close()for {buf := make([]byte, 512)//如果没有Write会停在这里,类似我们stdin输入的时候,光标会停在输入的位置//如果连接突然中断的话,这里会报错//TCP底层会定时发送消息,检查连接是否存在n, err := conn.Read(buf)if err != nil {fmt.Println("err=", err)return//有可能是关闭了}//字节切片要强制转换//buf后面的存的可能是乱七八糟的东西,注意取前n个!fmt.Print(string(buf[:n]))}
}func main() {fmt.Println("开始监听")//使用tcp协议,监听本机listen, err := net.Listen("tcp", "0.0.0.0:8888")if err != nil {fmt.Println("err=", err)}//延迟关闭defer listen.Close()//循环等待for {//等待客户端连接fmt.Println("等待连接...")//获取连接conn, err := listen.Accept()if err != nil {fmt.Println("err=", err)} else {fmt.Println("con=", conn)}//起一个协程为客户端服务go process(conn)}
}

client.go

package mainimport ("bufio""fmt""net""os"
)func main() {conn, err := net.Dial("tcp", "127.0.0.1:8888")if err != nil {fmt.Println("err=", err)}fmt.Println("连接成功conn=", conn)//创建标准stdin的readerreader := bufio.NewReader(os.Stdin)//读取一行str, err := reader.ReadString('\n')if err != nil {fmt.Println("err=", err)}n, err := conn.Write([]byte(str))if err != nil {fmt.Println("err=", err)}fmt.Println("发送了n个字节n=", n)
}
  • 一个小点,发送的字节数多2,应该是回车键的缘故,可能这里是当成\n\r
http://www.hkea.cn/news/14286/

相关文章:

  • 关键词排名优化易下拉教程武汉seo优化排名公司
  • saas建站平台介绍目前最靠谱的推广平台
  • php做网站标题加链接网络营销的方式有哪些
  • 网页设计参考网站百度seo查询收录查询
  • 海口网上注册公司流程seo网站推广软件
  • wordpress引导页插件抖音搜索seo排名优化
  • 做分销微商城网站石家庄百度推广优化排名
  • jsp网站怎么做邮箱验证码seo关键词找29火星软件
  • 好看的网站色彩搭配免费建设网站平台
  • 有什么网站做图片宣传海报seo属于什么
  • 微信小程序格泰网站建设seo技术培训中心
  • 如何用nat123做网站网络公关公司
  • 团员注册网站做企业网站哪个平台好
  • 网站虚拟主机里的内容强制删除广州营销推广
  • 沈阳做网站软件营销团队
  • 18g网站空间跨境电商平台有哪些
  • 手机软件app制作工具厦门seo服务
  • 如何做独立站五种营销工具
  • 网站视频下载windowswin7怎么优化最流畅
  • 中国互联网头部企业厦门最好的seo公司
  • 寻找做日文网站网站查询访问
  • wordpress 去掉顶部工具栏搜索引擎优化排名技巧
  • 大连网站制作师百度快照怎么打开
  • flash新手入门简单动画制作沈阳专业网站seo推广
  • 网站漂浮图怎么做惠州seo快速排名
  • 河南郑州金水区北京seo排名方法
  • 深圳建站公司招聘营销策划机构
  • 北京企业建站系统模板百度pc网页版
  • 购买了域名之后怎么做网站旺道营销软件
  • 淘宝天猫优惠卷网站建设在线推广企业网站的方法有哪些