婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > golang之反射和斷言的具體使用

golang之反射和斷言的具體使用

熱門標簽:濮陽自動外呼系統代理 長沙ai機器人電銷 廣東語音外呼系統供應商 福州鐵通自動外呼系統 智能電銷機器人營銷 澳門防封電銷卡 烏魯木齊人工電銷機器人系統 賺地圖標注的錢犯法嗎 地圖標注測試

1. 反射

反射這個概念絕大多數語言都有,比如Java,PHP之類,golang自然也不例外,反射其實程序能夠自描述和自控制的一類機制。

比如,通過PHP的反射,你可以知道一個類有什么成員,有什么方法。而golang,也能夠通過官方自帶的reflect包來了解各種變量類型及其信息。

下面我們通過一個例子查看反射的基本用法。

話不多說,直接貼代碼:

package main

import (
  "fmt"
  "reflect"
)

type Order struct {
  ordId   int `json:"order_id" validate:"required"`
  customerId string  `json:"customer_id" validate:"required"`
  callback func() `json:"call_back" validate:"required"`
}

func reflectInfo(q interface{}) {
  t := reflect.TypeOf(q)
  v := reflect.ValueOf(q)
  fmt.Println("Type ", t)
  fmt.Println("Value ", v)
  for i := 0; i  v.NumField(); i = i + 1 {
    fv := v.Field(i)
    ft := t.Field(i)
    tag := t.Field(i).Tag.Get("json")
    validate := t.Field(i).Tag.Get("validate")
    switch fv.Kind() {
    case reflect.String:
      fmt.Printf("The %d th %s types: %s, valuing: %s, struct tag: %v\n", i, ft.Name, "string", fv.String(), tag + " " + validate)
    case reflect.Int:
      fmt.Printf("The %d th %s types %s, valuing %d, struct tag: %v\n", i, ft.Name, "int", fv.Int(), tag + " " + validate)
    case reflect.Func:
      fmt.Printf("The %d th %s types %s, valuing %v, struct tag: %v\n", i, ft.Name, "func", fv.String(), tag + " " + validate)
    }
  }

}
func main() {
  o := Order{
    ordId:   456,
    customerId: "39e9e709-dd4f-0512-9488-a67c508b170f",
  }
  reflectInfo(o)
}

首先,我們用reflect.TypeOf(q)和reflect.ValueOf(q)獲取了結構體order的類型和值,然后我們再從循環里對它的成員進行一個遍歷,并將所有成員的名稱和類型打印了出來。這樣,一個結構體的所有信息就都暴露在我們面前。

2.斷言

Go語言里面有一個語法,可以直接判斷是否是該類型的變量: value, ok = element.(T),這里value就是變量的值,ok是一個bool類型,element是interface變量,T是斷言的類型。

如果element里面確實存儲了T類型的數值,那么ok返回true,否則返回false。

package main

import (
  "fmt"
)

type Order struct {
  ordId   int
  customerId int
  callback func()
}

func main() {
  var i interface{}
  i = Order{
    ordId:   456,
    customerId: 56,
  }
  value, ok := i.(Order)
  if !ok {
    fmt.Println("It's not ok for type Order")
    return
  }
  fmt.Println("The value is ", value)
}

輸出:

The value is  {456 56 nil>}

常見的還有用switch來斷言:

package main

import (
  "fmt"
)

type Order struct {
  ordId   int
  customerId int
  callback func()
}

func main() {
  var i interface{}
  i = Order{
    ordId:   456,
    customerId: 56,
  }
  switch value := i.(type) {
    case int:
      fmt.Printf("It is an int and its value is %d\n", value)
    case string:
      fmt.Printf("It is a string and its value is %s\n", value)
    case Order:
      fmt.Printf("It is a Order and its value is %v\n", value)
    default:
      fmt.Println("It is of a different type")
    }
}

輸出:

It is a Order and its value is {456 56 nil>}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 淺談golang類型斷言,失敗類型斷言返回值問題
  • Golang斷言判斷值類型的實現方法

標簽:廣西 德州 慶陽 阿克蘇 西雙版納 太原 貴陽 調研邀請

巨人網絡通訊聲明:本文標題《golang之反射和斷言的具體使用》,本文關鍵詞  golang,之,反射,和,斷言,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang之反射和斷言的具體使用》相關的同類信息!
  • 本頁收集關于golang之反射和斷言的具體使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91黄视频在线| 久久精品一区二区三区不卡| 日韩欧美一区二区三区在线| 久久久影视传媒| 亚洲高清不卡在线| 成人综合婷婷国产精品久久蜜臀| 欧美日韩另类一区| 国产区在线观看成人精品| 首页国产丝袜综合| 欧美在线不卡一区| 《视频一区视频二区| 国产精品一区二区久激情瑜伽| 777奇米成人网| 亚洲一区二三区| 99国产精品国产精品毛片| 欧美国产97人人爽人人喊| 黄色精品一二区| 日韩一区二区三区观看| 亚洲一区二区三区四区在线免费观看 | 一本色道亚洲精品aⅴ| 国产日韩av一区| 久久99国内精品| 欧美一区二区三区免费视频| 天天影视涩香欲综合网 | 日韩免费看的电影| 婷婷综合另类小说色区| 欧美视频一区二区在线观看| 亚洲精品ww久久久久久p站| av不卡一区二区三区| 国产亚洲综合在线| 国产夫妻精品视频| 久久精品一区二区三区av| 麻豆视频观看网址久久| 久久久久久久性| 国产一区二区在线视频| 久久久不卡影院| 国产精品香蕉一区二区三区| 久久精品人人做| 丁香婷婷综合色啪| 亚洲色图欧洲色图| 欧美日韩一区久久| 免费在线观看一区| 久久久久久久久久美女| 国产激情一区二区三区| 亚洲欧洲精品一区二区精品久久久| 成人综合在线视频| 一区二区欧美精品| 日韩一级大片在线观看| 黄一区二区三区| 国产调教视频一区| 日本精品裸体写真集在线观看 | 国产精品久久久久9999吃药| a亚洲天堂av| 国产精品久久久久天堂| 在线观看一区二区精品视频| 免费成人美女在线观看.| 久久久久久久久久美女| 一本色道久久综合亚洲aⅴ蜜桃| 香蕉乱码成人久久天堂爱免费| 日韩一区二区三区视频在线观看 | 午夜精品成人在线视频| 精品福利在线导航| 不卡一区二区三区四区| 日韩精品乱码免费| 国产精品理论片| 69久久夜色精品国产69蝌蚪网| 国产一区不卡精品| 亚洲夂夂婷婷色拍ww47| 久久综合av免费| 欧美无砖专区一中文字| 国v精品久久久网| 午夜免费久久看| 欧美激情一区二区三区四区| 欧美色成人综合| 丁香五精品蜜臀久久久久99网站| 五月婷婷激情综合网| 中文欧美字幕免费| 精品国产伦一区二区三区观看方式| jizz一区二区| 久久99精品久久久久久动态图| 亚洲精品久久7777| 久久久久久黄色| 欧美一区二区三级| 欧美性生活一区| 91免费看视频| 高清不卡在线观看av| 强制捆绑调教一区二区| 亚洲午夜av在线| 成人欧美一区二区三区在线播放| 日韩欧美精品在线| 91精品欧美一区二区三区综合在| 色爱区综合激月婷婷| 99久久婷婷国产综合精品| 国产在线观看一区二区| 日本大胆欧美人术艺术动态| 一区二区三区四区视频精品免费 | 色伊人久久综合中文字幕| 国产真实乱对白精彩久久| 日本欧洲一区二区| 午夜精品福利一区二区三区av| 伊人婷婷欧美激情| 亚洲视频一区二区免费在线观看| 中文一区一区三区高中清不卡| 久久综合色婷婷| 欧美成人a在线| 日韩一二三区视频| 日韩精品一区二区在线| 欧美一级日韩一级| 日韩视频永久免费| 日韩三级免费观看| 精品免费国产二区三区 | 欧美成人艳星乳罩| 欧美一区午夜视频在线观看| 欧美日韩高清不卡| 欧美视频在线观看一区二区| 在线观看欧美黄色| 在线观看成人小视频| 日本精品免费观看高清观看| 在线亚洲高清视频| 欧美日韩国产成人在线免费| 欧美日韩和欧美的一区二区| 69堂精品视频| 2017欧美狠狠色| 国产精品成人网| 亚洲最大的成人av| 亚洲成人你懂的| 精品影院一区二区久久久| 国产精品一区二区在线观看网站| 国产成人综合自拍| 色av综合在线| 日韩一区二区三区免费看| 久久久久99精品一区| 中文字幕一区二区三区不卡| 一区二区三区四区高清精品免费观看| 亚洲主播在线观看| 久久99九九99精品| 91视频在线观看免费| 欧美日本在线观看| 国产情人综合久久777777| 一区二区不卡在线视频 午夜欧美不卡在| 一区二区不卡在线播放| 久久精品国产亚洲高清剧情介绍| 国产老肥熟一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 精品视频免费看| 国产欧美一区二区精品性色 | 1024国产精品| 老司机精品视频一区二区三区| 国产成人免费av在线| 欧美精品1区2区| 中文字幕av一区二区三区高| 亚洲国产成人av| 国产成人精品免费一区二区| 欧美三级电影在线看| 久久久久久日产精品| 亚洲va韩国va欧美va| 大尺度一区二区| 日韩欧美美女一区二区三区| 亚洲精品成人a在线观看| 韩国视频一区二区| 欧美网站一区二区| 亚洲国产精品精华液2区45| 亚洲国产精品久久艾草纯爱 | 欧美性一级生活| 久久精品视频一区二区三区| 婷婷六月综合网| 91国模大尺度私拍在线视频| 欧美国产日本韩| 麻豆91精品视频| 欧美色倩网站大全免费| 国产精品私人影院| 韩国在线一区二区| 日韩欧美在线综合网| 一区二区三区欧美视频| 成人h版在线观看| 精品福利二区三区| 日本欧美一区二区| 欧美日韩一级视频| 亚洲午夜久久久久久久久久久| 成人免费电影视频| 国产欧美日韩在线视频| 国内精品免费**视频| 欧美电影免费观看完整版| 亚洲国产乱码最新视频| 欧美中文一区二区三区| 日韩美女久久久| 欧美一级国产精品| 亚洲自拍另类综合| 欧美色图激情小说| 午夜精品久久久久久久久| 在线一区二区三区四区| 一区二区三国产精华液| 色8久久精品久久久久久蜜| 自拍偷拍亚洲综合| 91视频.com| 一区二区三区在线视频观看| 在线观看视频一区| 亚洲1区2区3区视频| 欧美一级在线免费| 国产永久精品大片wwwapp|