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

如何自己建立网站建设新公司注册工商核名系统

如何自己建立网站建设,新公司注册工商核名系统,关键词优化是什么工作,外网服务器Go语言断言和类型查询 1、类型断言 类型断言(Type Assertion)是一个使用在接口值上的操作#xff0c;用于检查接口类型变量所持有的值是否实现了期望的接 口或者具体的类型。 在Go语言中类型断言的语法格式如下#xff1a; // i.(TypeNname) value, ok : x.(T)其中…Go语言断言和类型查询 1、类型断言 类型断言(Type Assertion)是一个使用在接口值上的操作用于检查接口类型变量所持有的值是否实现了期望的接 口或者具体的类型。 在Go语言中类型断言的语法格式如下 // i.(TypeNname) value, ok : x.(T)其中x 表示一个接口的类型如果是具体类型变量则编译器会报non-interface type xxx on leftT 表 示一个具体的类型(也可为接口类型)。 该断言表达式会返回 x 的值也就是 value和一个布尔值也就是 ok可根据该布尔值判断 x 是否为 T 类 型 如果 T 是具体某个类型类型断言会检查 x 的动态类型是否等于具体类型 T。如果检查成功类型断言返回的 结果是 x 的动态值其类型是 T。 如果 T 是接口类型类型断言会检查 x 的动态类型是否满足 T。如果检查成功x 的动态值不会被提取返回 值是一个类型为 T 的接口值。 无论 T 是什么类型如果 x 是 nil 接口值类型断言都会失败。 示例代码如下 package mainimport (fmt )func main() {var x interface{}x 10value, ok : x.(int)// 10,truefmt.Print(value, ,, ok) }运行结果如下 # 程序结果 10,true需要注意如果不接收第二个参数也就是上面代码中的 ok断言失败时会直接造成一个 panic如果 x 为 nil 同样也 会 panic。 示例代码如下 package mainimport (fmt )func main() {var x interface{}x Hellovalue : x.(int)fmt.Println(value) }运行结果如下 # 输出结果 panic: interface conversion: interface {} is string, not int接口断言通常可以使用 comma,ok 语句来确定接口是否绑定某个实例类型或者判断接口绑定的实例类型是否实 现另一个接口。 re,ok : body.(io.ReadCloser) if,ok : r.Body.(*maxBytesReader);2、类型查询 接口类型查询的语法格式如下 switch v : i.(type){case typel:XXXXcase type2:XXXXdefault:XXXX }接口查询有两层语义一是查询一个接口变量底层绑定的底层变量的具体类型是什么二是查询接口变量绑定的底 层变量是否还实现了其他接口。 (1)、i 必须是接口类型 具体类型实例的类型是静态的在类型声明后就不再变化所以具体类型的变量不存在类型查询类型查询一定是 对一个接口变量进行操作。也就是说上文中的i必须是接口变量如果i是未初始化接口变量则v的值是 nil。 package mainimport (fmtio )func main() {var i io.Reader//此处i是为未初始化的接口变量,所以v为nilswitch v : i.(type) {case nil://nilfmt.Printf(%T\n, v)default:fmt.Printf(default)} }(2)、case 字句后面可以跟非接口类型名也可以跟接口类型名匹配是按照 case 子句的顺序进行的。 如果 case 后面是一个接口类型名且接口变量i绑定的实例类型实现了该接口类型的方法则匹配成v的类 型是接口类型v底层绑定的实例是i绑定具体类型实例的副本。 如果 case 后面是一个具体类型名且接口变量i绑定的实例类型和该具体类型相同则匹配成功此时v 就是 该具体类型变量v的值是i绑定的实例值的副本。 如果 case 后面跟着多个类型使用逗号分隔接口变量i绑定的实例类型只要和其中一个类型匹配则直接使 用o赋值给v相当于 v:o。这个语法有点奇怪按理说编译器不应该允许这种操作语言实现者可能想让 type switch 语句和普通的 switch 语句保持一样的语法规则允许发生这种情况。 如果所有的case字句都不满足则执行 default 语句此时执行的仍然是 v:o最终v的值是o。此时使用v没 有任何意义。 fallthrough 语句不能在 Type Switch 语句中使用。 package mainimport (fmtiologos )func main() {var i io.Reader// 此处i是为未初始化的接口变量,所以v为nilswitch v : i.(type) {case nil:// nilfmt.Printf(%T\n, v)default:fmt.Printf(default)}f, err : os.OpenFile(notes.txt, os.O_RDWR|os.O_CREATE, 0755)if err ! nil {log.Fatal(err)}defer f.Close()i fswitch v : i.(type) {// i的绑定的实例是*osFile类型实现了io.ReadWriter接口所以下面case匹配成功case io.ReadWriter:// v是io.ReadWriter接口类型所以可以调用Write方法v.Write([]byte(io.ReadWriter\n))// Type Switch Result: io.ReadWriterfmt.Println(Type Switch Result: io.ReadWriter)// 由于上一个case已经匹配就算这个case也匹配也不会走到这里case *os.File:v.Write([]byte(*os.File\n))fmt.Println(Type Switch Result: *os.File)//这里可以调用具体类型方法v.Sync()default:fmt.Println(Type Switch Result: unknown)return}switch v : i.(type) {// 匹配成功v的类型就是具体类型*os.Filecase *os.File:v.Write([]byte(*os.File\n))// Type Switch Result: *os.Filefmt.Println(Type Switch Result: *os.File)v.Sync()//由于上一个case已经匹配就算这个case也匹配也不会走到这里case io.ReadWriter://v是io.ReadWriter接口类型所以可以调用Write方法v.Write([]byte(io.ReadWriter\n))fmt.Println(Type Switch Result: io.ReadWriter)default:fmt.Println(Type Switch Result: unknown)return}switch v : i.(type) {//多个类型f满足其中任何一个就算匹配case *os.File, io.ReadWriter:// 此时相当于执行力v : i ,v和i是等价的使用v没有意义。if v i {// truefmt.Println(true)}default:return} }# 程序输出 nil Type Switch Result: io.ReadWriter Type Switch Result: *os.File truepackage mainimport (fmt )func main() {var a inta 10// the type of a is intgetType(a) }func getType(a interface{}) {switch a.(type) {case int:fmt.Println(the type of a is int)case string:fmt.Println(the type of a is string)case float64:fmt.Println(the type of a is float)default:fmt.Println(unknown type)} }# 程序输出 the type of a is int
http://www.pierceye.com/news/288374/

相关文章:

  • 钦州建设局网站云南网站建设招商
  • 韩国风格网站php源码网站怎么放到服务器上
  • 网站调优yandex搜索引擎入口
  • 医院网站建设具体内容商丘网站制作电话
  • 别人做的网站直播网站
  • 足球梦网站建设的基本思路沧州做企业网站
  • 招标建设网站什么是微信wordpress
  • 建设银行网站连不上成都网站快照优化公司
  • 网站 永久关停 请示广州网站建设骏域网站
  • 个人建站模板外国网站翻墙怎么做
  • 保定网站设计制作公司有经验的中山网站建设
  • 免费网站建设那个好wordpress本地怎么上传服务器
  • 自己做的网站加载慢WordPress模板首页文件是啥
  • 教学网站建设网站建设岗位有哪些
  • 网站建设合同的验收表网页网站的区别是什么
  • 开福区网站建设中wordpress调用所有栏目
  • 网站建设的流程是什么意思青岛做网站公司
  • 什么网站有项目做中铁建设企业门户网
  • 网站域名商代理商安卓商店
  • 深圳中英文网站建设广州知名设计公司排名
  • 一个公司设计网站怎么做的蜜桃传奇免费网页版
  • 网络推广网站培训班有人用wordpress默认主题
  • 网站建设 后台南宁做网站方案
  • 在线制作插画网站网站建设有哪些公司
  • 合肥的网站建设剂屏自己可以做开奖网站吗
  • 官网设计比较好看的网站学校网站建设对教学的意义
  • 济南建站推荐企汇优见效付款毕设代做网站招聘
  • 泰然建设网站免费软件app下载大全正能量网站
  • 张掖市网站建设北京代理记账财务公司
  • 中铁建设集团网站网络公司手机网站