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

韩国设计公司网站网站建设的基本步骤

韩国设计公司网站,网站建设的基本步骤,房山建设网站,网站用ps做还是aiGo学习-Day10 个人博客#xff1a;CSDN博客 反射 编写函数适配器#xff0c;序列化和反序列话可以用到 反射可以在运行时#xff0c;动态获取变量的各种信息#xff0c;例如类型#xff0c;结构体本身的信息#xff0c;修改变量的值#xff0c;调用关联的方法 反射是…Go学习-Day10 个人博客CSDN博客 反射 编写函数适配器序列化和反序列话可以用到 反射可以在运行时动态获取变量的各种信息例如类型结构体本身的信息修改变量的值调用关联的方法 反射是不是和映射相反是一种逆函数 变量到空接口相互转换空接口和reflect.value相互转换 动手一下 import (fmtreflect )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的主要设计目标之一就是面向大规模的后端服务程序网络通信是服务端程序必不可少的一部分网络编程有两种 TCPTransmission Control Protocol socket编程和HTTP编程建立在前者之上做服务器尽量少开端口一个端口只能被一个程序监听 监听端口小Demo net包提供了可以指的I/O接口 package mainimport (fmtnet )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 (fmtnet )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 (bufiofmtnetos )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.tj-hxxt.cn/news/142685.html

相关文章:

  • 营销网站建设计算机专业主要学什么课程
  • shopnc本地生活o2o网站系统seo营销怎么做
  • 长沙网站托管哪家好wordpress 菜单分类
  • 建站服务网络公司校园二手市场网站开发
  • 网站做sem能够提高收录量吗做网站计划
  • 网站做好了该怎么做网站项目流程
  • 做一个网站维护多少钱高密建设局网站
  • 郑州seo线下培训网站建设优化排名推广
  • 网站开发与设计 课程简介WordPress 整合源码
  • 专门做门的网站开网站赚钱
  • 网站备案和服务器备案建公司网站设计网站公司
  • 建设学院实验网站的作用wordpress显示图片
  • 一 电子商务网站建设规划装修公司网站asp源码
  • 网站推广的优缺点江苏建筑网站
  • 做废钢铁生意在哪个网站了解《网页设计与网站建设》
  • 如何承接网站建设外包如何免费注册企业邮箱
  • 北流网站j2ee 建设简单网站
  • wap网站分享到微信做网站推广复杂吗
  • 360网站建设公司山东食品行业网站开发
  • 青岛市做网站优化易语言可以做网站么
  • 商业网站设计与制作论文wordpress投稿页面路径怎么
  • 专门做校招的网站广告设计与制作就业方向是什么
  • 上海徐汇网站建设公司2022一级造价停考
  • 郑州官网网站优化公司百度百科创建入口
  • 网站怎么做会让神马搜索到新注册的公司怎么做网站
  • 网站开发项目中的rd英语培训机构
  • 做电影网站用什么源码2022网页游戏
  • 聚美优品的网站建设状况电商网站 设计方案
  • 网站后台如何做产品展示外贸有限公司英文网站
  • 免费空间能放网站吗网站做微信支付宝支付