中文字幕人妻中文_99精品欧美一区二区三区综合在线_精品久久久久一区二区_色月丁香_免费福利在线视频_欧美大片免费观看网址_国产伦精品一区二区三区在线播放_污污污污污污www网站免费_久久月本道色综合久久_色69激情爱久久_尹人香蕉久久99天天拍_国产美女www_亚洲国产精品无码7777一线_五月婷婷六月激情_看免费一级片_精品久久久久久成人av_在线色亚洲_女人另类性混交zo_国产精品青青在线观看爽香蕉_人人澡人人添人人爽一区二区

主頁 > 知識庫 > 基于go interface{}==nil 的幾種坑及原理分析

基于go interface{}==nil 的幾種坑及原理分析

熱門標簽:涿州代理外呼系統 excel地圖標注分布數據 壽光微信地圖標注 阿克蘇地圖標注 評價高的400電話辦理 外呼系統顯本地手機號 外呼系統用什么卡 電話機器人軟件免費 百度地圖標注后傳給手機

本文是Go比較有名的一個坑,在以前面試的時候也被問過,為什么想起來寫這個?

因為我們線上就真實出現過這個坑,寫給不了解的人在使用 if err != nil 的時候提高警惕。

Go語言的interface{}在使用過程中有一個特別坑的特性,當你比較一個interface{}類型的值是否是nil的時候,這是需要特別注意避免的問題。

先來看看一個demo:

package main
import "fmt"
type ErrorImpl struct{}
func (e *ErrorImpl) Error() string {
   return ""
}
var ei *ErrorImpl
var e error
func ErrorImplFun() error {
   return ei
}
func main() {
   f := ErrorImplFun()
   fmt.Println(f == nil)
}

輸出:

false

為什么不是true?

想要理解這個問題,首先需要理解interface{}變量的本質。在Go語言中,一個interface{}類型的變量包含了2個指針,一個指針指向值的在編譯時確定的類型,另外一個指針指向實際的值。

// InterfaceStructure 定義了一個interface{}的內部結構
type InterfaceStructure struct {
  pt uintptr // 到值類型的指針
  pv uintptr // 到值內容的指針
}
// asInterfaceStructure 將一個interface{}轉換為InterfaceStructure
func asInterfaceStructure(i interface{}) InterfaceStructure {
  return *(*InterfaceStructure)(unsafe.Pointer(i))
}
func main() {
  var i1, i2 interface{}
  var v1 int = 23
  var v2 int = 23
  i1 = v1
  i2 = v2
  fmt.Printf("sizeof interface{} = %d\n", unsafe.Sizeof(i1))
  fmt.Printf("i1 %v %+v\n", i1, asInterfaceStructure(i1))
  fmt.Printf("i2 %v %+v\n", i2, asInterfaceStructure(i2))
  var nilInterface interface{}
  var str *string
  fmt.Printf("nil interface = %+v\n", asInterfaceStructure(nilInterface))
  fmt.Printf("nil string = %+v\n", asInterfaceStructure(str))
  fmt.Printf("nil = %+v\n", asInterfaceStructure(nil))
}

輸出:

sizeof interface{} = 16

i1 23 {pt:4812032 pv:825741246928}

i2 23 {pt:4812032 pv:825741246936}

nil interface = {pt:0 pv:0}

nil string = {pt:4802400 pv:0}

nil = {pt:0 pv:0}

當我們將一個具體類型的值賦值給一個interface{}類型的變量的時候,就同時把類型和值都賦值給了interface{}里的兩個指針。如果這個具體類型的值是nil的話,interface{}變量依然會存儲對應的類型指針和值指針。

如何解決?

方法一

返回的結果進行非nil檢查,然后再賦值給interface{}變量

type ErrorImpl struct{}
func (e *ErrorImpl) Error() string {
   return ""
}
var ei *ErrorImpl
var e error
func ErrorImplFun() error {
   if ei == nil {
      return nil
   }
   return ei
}
func main() {
   f := ErrorImplFun()
   fmt.Println(f == nil)
}

輸出:

true

方法二

返回具體實現的類型而不是interface{}

package main
import "fmt"
type ErrorImpl struct{}
func (e *ErrorImpl) Error() string {
   return ""
}
var ei *ErrorImpl
var e error
func ErrorImplFun() *ErrorImpl {
   return ei
}
func main() {
   f := ErrorImplFun()
   fmt.Println(f == nil)
}

輸出:

true

解決由于第三方包帶來的坑

由于有的error是第三方包返回的,又自己不想改第三方包,只好接收處理的時候想辦法。

方法一

利用interface{}原理

 is:=*(*InterfaceStructure)(unsafe.Pointer(i))
 if is.pt==0  is.pv==0 {
     //is nil do something
 }

將底層指向值和指向值的類型的指針打印出來如果都是0,表示是nil

方法二

利用斷言,斷言出來具體類型再判斷非空

type ErrorImpl struct{}
func (e ErrorImpl) Error() string {
   return "demo"
}
var ei *ErrorImpl
var e error
func ErrorImplFun() error {
   //ei = ErrorImpl{}
   return ei
}
func main() {
   f := ErrorImplFun()
   //當然error實現類型較多的話使用  
 //switch case方式斷言更清晰
   res, ok := f.(*ErrorImpl)
   fmt.Printf("ok:%v,f:%v,res:%v", 
   ok, f == nil, res == nil)
}

輸出:

ok:true,f:false,res:true

方法三

利用反射

type ErrorImpl struct{}
func (e ErrorImpl) Error() string {
   return "demo"
}
var ei *ErrorImpl
var e error
func ErrorImplFun() error {
   //ei = ErrorImpl{}
   return ei
}
func main() {
   f := ErrorImplFun()
   rv := reflect.ValueOf(f)
   fmt.Printf("%v", rv.IsNil())
}

輸出:

true

注意⚠:

斷言和反射性能不是特別好,如果不得已再使用,控制使用有助于提升程序性能。

由于函數接收類型導致的panic:

type ErrorImpl struct{}
func (e ErrorImpl) Error() string {
   return "demo"
}
var ei *ErrorImpl
var e error
func ErrorImplFun() error {
   return ei
}
func main() {
   f := ErrorImplFun()
   fmt.Printf(f.Error())
}

輸出:

panic: value method main.ErrorImpl.Error called using nil *ErrorImpl pointer

解決:

func (e *ErrorImpl) Error() string {
   return "demo"
}

輸出:

demo

可以發現將接收類型變成指針類型就可以了。

以上就是 nil 相關的坑,希望大家可以牢記,如果 ”幸運“ 的遇到了,可以想到這些可能性。

補充:go 語言 interface{} 的易錯點

如果說 goroutine 和 channel 是 go 語言并發的兩大基石,那 interface 就是 go 語言類型抽象的關鍵。

在實際項目中,幾乎所有的數據結構最底層都是接口類型。

說起 C++ 語言,我們立即能想到是三個名詞:封裝、繼承、多態。go 語言雖然沒有嚴格意義上的對象,但通過 interface,可以說是實現了多態性。(由以組合結構體實現了封裝、繼承的特性)

package main
type animal interface {
    Move()
}
type bird struct{}
func (self *bird) Move() {
    println("bird move")
}
type beast struct{}
func (self *beast) Move() {
    println("beast move")
}
func animalMove(v animal) {
    v.Move()
}
func main() {
    var a *bird
    var b *beast
    animalMove(a) // bird move
    animalMove(b) // beast move
}

go 語言中支持將 method、struct、struct 中成員定義為 interface 類型,使用 struct 舉一個簡單的栗子

使用 go 語言的 interface 特性,就能實現多態性,進行泛型編程。

二,interface 原理

如果沒有充分了解 interface 的本質,就直接使用,那最終肯定會踩到很深的坑,要用就先要了解,先來看看 interface 源碼

 type eface struct {
     _type *_type
     data  unsafe.Pointer
 }  
 type _type struct {
     size       uintptr // type size
     ptrdata    uintptr // size of memory prefix holding all pointers
     hash       uint32  // hash of type; avoids computation in hash tables
     tflag      tflag   // extra type information flags
     align      uint8   // alignment of variable with this type
     fieldalign uint8   // alignment of struct field with this type
     kind       uint8   // enumeration for C
     alg        *typeAlg  // algorithm table
     gcdata    *byte    // garbage collection data
     str       nameOff  // string form
     ptrToThis typeOff  // type for pointer to this type, may be zero
 }

可以看到 interface 變量之所以可以接收任何類型變量,是因為其本質是一個對象,并記錄其類型和數據塊的指針。(其實 interface 的源碼還包含函數結構和內存分布,由于不是本文重點,有興趣的同學可以自行了解)

三,interface 判空的坑

對于一個空對象,我們往往通過 if v == nil 的條件語句判斷其是否為空,但在代碼中充斥著 interface 類型的情況下,很多時候判空都并不是我們想要的結果(其實了解或聰明的同學從上述 interface 的本質是對象已經知道我想要說的是什么)

package main 
 type animal interface {
     Move()
 } 
 type bird struct{} 
 func (self *bird) Move() {
     println("bird move")
 } 
 type beast struct{} 
 func (self *beast) Move() {
     println("beast move")
 } 
 func animalMove(v animal) {
     if v == nil {
         println("nil animal")
     }
     v.Move()
 } 
 func main() {
     var a *bird   // nil
     var b *beast  // nil
     animalMove(a) // bird move
     animalMove(b) // beast move
 }

還是剛才的栗子,其實在 go 語言中 var a *bird 這種寫法,a 只是聲明了其類型,但并沒有申請一塊空間,所以這時候 a 本質還是指向空指針,但我們在 aminalMove 函數進行判空是失敗的,并且下面的 v.Move() 的調用也是成功的,本質的原因就是因為 interface 是一個對象,在進行函數調用的時候,就會將 bird 類型的空指針進行隱式轉換,轉換成實例的 interface animal 對象,所以這時候 v 其實并不是空,而是其 data 變量指向了空。

這時候看著執行都正常,那什么情況下坑才會絆倒我們呢?只需要加一段代碼

package main 
 type animal interface {
     Move()
 } 
 type bird struct {
    name string
 } 
 func (self *bird) Move() {
     println("bird move %s", self.name) // panic
 } 
 type beast struct {
     name string
 } 
 func (self *beast) Move() {
     println("beast move %s", self.name) // panic
 } 
 func animalMove(v animal) {
     if v == nil {
         println("nil animal")
     }
     v.Move()
 } 
 func main() {
     var a *bird   // nil
     var b *beast  // nil
     animalMove(a) // panic
     animalMove(b) // panic
 }

在代碼中,我們給派生類添加 name 變量,并在函數的實現中進行調用,就會發生 panic,這時候的 self 其實是 nil 指針。所以這里坑就出來了。

有些人覺得這類錯誤謹慎一些還是可以避免的,那是因為我們是正向思維去代入接口,但如果反向編程就容易造成很難發現的 bug

package main 
 type animal interface {
     Move()
 } 
 type bird struct {
     name string
 } 
 func (self *bird) Move() {
     println("bird move %s", self.name)
 } 
 type beast struct {
     name string
 } 
 func (self *beast) Move() {
     println("beast move %s", self.name)
 } 
 func animalMove(v animal) {
     if v == nil {
         println("nil animal")
     }
     v.Move()
 } 
 func getBirdAnimal(name string) *bird {
     if name != "" {
         return bird{name: name}
     }
     return nil
 } 
 func main() {
     var a animal
     var b animal
     a = getBirdAnimal("big bird")
     b = getBirdAnimal("") // return interface{data:nil}
     animalMove(a) // bird move big bird
     animalMove(b) // panic
 }

這里我們看到通過函數返回實例類型指針,當返回 nil 時,因為接收的變量為接口類型,所以進行了隱性轉換再次導致了 panic(這類反向轉換很難發現)。

那我們如何處理上述這類問題呢。我這邊整理了三個點

1,充分了解 interface 原理,使用過程中需要謹慎小心

2,謹慎使用泛型編程,接收變量使用接口類型,也需要保證接口返回為接口類型,而不應該是實例類型

3,判空是使用反射 typeOf 和 valueOf 轉換成實例對象后再進行判空

您可能感興趣的文章:
  • Golang中interface{}轉為數組的操作
  • 淺談Golang 嵌套 interface 的賦值問題
  • Golang 實現interface類型轉string類型
  • 解決golang 反射interface{}做零值判斷的一個重大坑
  • golang interface判斷為空nil的實現代碼
  • 詳解Golang語言中的interface
  • 使用go的interface案例實現多態范式操作
  • go 類型轉換方式(interface 類型的轉換)

標簽:重慶 銅川 梅河口 吐魯番 蘭州 汕頭 欽州 雞西

巨人網絡通訊聲明:本文標題《基于go interface{}==nil 的幾種坑及原理分析》,本文關鍵詞  基于,interface,nil,的,幾種,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于go interface{}==nil 的幾種坑及原理分析》相關的同類信息!
  • 本頁收集關于基于go interface{}==nil 的幾種坑及原理分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 江 诚机械有限公司| 华瑞丰机械有限公司| 宝钢湛江钢铁有限公司招聘| 浙江东雄重工有限公司| 深圳市机械有限公司| 杭州嘉诚机械有限公司| 贵州红林机械有限公司| 广州汉达机械有限公司| 山推重工机械有限公司| 温岭宏业机械有限公司| 苏州江源精密机械有限公司| 北京石油机械有限公司| 浙江机械有限公司招聘信息| 德州液压机械有限公司| 特雷克斯常州机械有限公司| 东铁机械制造有限公司| 桂林科丰机械有限公司| 北京余特包装机械有限公司 | 宏机械铸造有限公司| 江苏新技机械有限公司| 宜兴富曦机械有限公司| 四川久进机械制造有限公司| 东莞市鸿企机械有限公司| 山东机械铸造有限公司| 常州迈腾机械有限公司| 深圳市奥德机械有限公司| 冠龙阀门机械有限公司| 江山重工机械有限公司| 大连机械设备有限公司| 上海石化机械制造有限公司| 常州恒力机械有限公司| 长江机械设备有限公司| 泰安市民乐机械制造有限公司| 山东恒升机械有限公司| 山东西王钢铁有限公司| 江阴市洪腾机械有限公司| 杭州化工机械有限公司| 常州华德机械有限公司| 肥城金塔机械有限公司| 南通宝钢钢铁有限公司| 济南金胜星机械设备有限公司| 河南星光机械有限公司| 江苏江河机械制造有限公司| 佛山市恒力泰机械有限公司| 四川建筑机械有限公司| 上海昊宇机械有限公司| 东莞市纳金机械有限公司| 无锡前洲兴华机械有限公司| 新疆汇合钢铁有限公司| 宁波佳利来机械制造有限公司| 张家港和和机械有限公司| 杭州莱顿机械有限公司| 麻阳金湘钢铁有限公司| 东莞市千岛机械制造有限公司 | 株洲机械制造有限公司| 长沙威沃机械制造有限公司| 成都诚旭精密机械有限公司| 天津亨旺机械有限公司| 苏州机械设备有限公司| 瑞安包装机械有限公司| 上海澳昊机械制造有限公司| 上海二和机械有限公司| 上海本优机械有限公司| 上海盟申机械设备有限公司| 上海光华印刷机械有限公司| 南通液压机械有限公司| 长沙熙迈机械制造有限公司| 建筑机械租赁有限公司| 郑州同鼎机械设备有限公司| 张家港海狮洗涤机械有限公司| 德阳机械制造有限公司| 昆山弘迪精密机械有限公司| 浙江荣德机械有限公司| 重庆工程机械有限公司| 潍坊元鸣机械有限公司| 无锡双益精密机械有限公司| 南京重霸起重设备有限公司| 广东鸿业机械有限公司| 西安星火包装机械有限公司| 安徽唐兴机械装备有限公司| 浙江五一机械有限公司| 成都的起重有限公司| 青岛华磊塑料机械有限公司| 浙江中益机械有限公司| 新乡市东源机械有限公司| 山东起重机有限公司| 浙江起重机械有限公司| 江苏飞耀机械制造有限公司 | 江苏柯恒石化电力机械有限公司| 沈阳东荣机械有限公司| 芜湖中安重工自动化装备有限公司| 洛阳翼明机械有限公司| 上海宇意机械有限公司| 机械设备有限公司官网| 郑州米格机械有限公司| 海的动力机械有限公司| 天津达亿钢铁有限公司| 杭州群起建材有限公司| 常德纺织机械有限公司| 东莞瑞辉机械有限公司| 宁波市鸿博机械制造有限公司| 唐山市神州机械有限公司| 武汉贝瑞克机械制造有限公司 | 江阴中立机械工业有限公司| 昆成机械机械有限公司| 台州迈兴机械有限公司| 昆山胜代机械有限公司招聘| 沈阳德恒机械制造有限公司| 全氏食品机械(上海)有限公司| 深圳印刷机械有限公司| 四川高龙机械有限公司| 泰安通远机械有限公司| 山东液压机械有限公司| 河南德润钢铁有限公司| 嘉兴赛诺机械有限公司| 湖州汇大机械有限公司| 瀚乐电子机械有限公司| 河北清大环保机械有限公司| 佛山市奥索包装机械有限公司 | 吉首市中诚制药机械有限公司| 大连起重机有限公司| 上海 包装机械 有限公司| 北京加隆工程机械有限公司| 上海德元机械设备有限公司| 江苏祥达机械制造有限公司| 洛阳中德重工有限公司| 广东光信机械有限公司| 江苏迈安德食品机械有限公司 | 丹东富田精工机械有限公司| 绵阳新晨动力机械有限公司招聘 | 爱克苏州机械有限公司| 宁波旭升机械有限公司| 万金机械配件有限公司| 无锡沃利数控机械有限公司| 潍坊铭金机械有限公司| 福州 机械 有限公司| 重庆志成机械有限公司| 上海炬钢机械制造有限公司 | 河南一重起重机有限公司| 上海定盛机械有限公司| 无锡六叶机械有限公司| 桂林正东机械制造有限公司| 华丽木工机械有限公司| 上海福源机械有限公司| 青岛奥硕数控机械有限公司 | 吴江机械设备有限公司| 广州市勤达机械设备有限公司| 山西立恒钢铁有限公司| 潍坊大众机械有限公司| 青岛同三塑料机械有限公司| 山东亚泰重型机械有限公司| 山东鑫鑫机械有限公司| 嘉兴赛诺机械有限公司| 江苏闳业机械有限公司| 杭州纳源传动机械有限公司| 湖南天拓重工有限公司| 寿光 机械有限公司| 南京明瑞机械设备有限公司| 临沂工程机械有限公司| 招商局重工(江苏)有限公司| 昆山裕邦机械有限公司| 淄博宙灿机械有限公司| 焦作巨航粮油机械有限公司| 淄博机械制造有限公司| 元昆机械(昆山)有限公司| 江阴博丰钢铁有限公司| 青岛鳌福机械有限公司| 湖南省湘粮机械制造有限公司| 陕西重型机械制造有限公司| 深圳市 机械有限公司| 爱克苏州机械有限公司| 机械进出口有限公司| 濮阳市名利石化机械设备制造有限公司 | 昆山河海精密机械有限公司| 朝阳重工机械有限公司| 浙江飞挺机械有限公司| 泉州市恒兴工业机械有限公司| 东莞市今塑精密机械有限公司 | 东莞市业佳精密机械有限公司| 碎得机械北京有限公司| 浙江雄鹏机械有限公司| 宁波永博机械制造有限公司| 江苏联鑫钢铁有限公司| 东莞港重机械有限公司| 重庆中容石化机械制造有限公司| 天津石油机械有限公司| 史陶比尔精密机械电子有限公司| 广州华臻机械设备有限公司| 江阴科盛机械有限公司| 山东煤矿机械有限公司| 苏州联屹精密机械有限公司| 大连地拓重工有限公司| 日照机械制造有限公司| 青岛云龙纺织机械有限公司| 泰安恒大机械有限公司| 迪砂常州机械有限公司| 世翔精密机械制造有限公司| 山东元裕机械有限公司| 无锡伊诺特石化机械设备有限公司| 常州华威起重工具有限公司| 丝网机械设备有限公司| 青岛义龙包装机械有限公司| 启英机械设备有限公司| 沈阳高新机械有限公司| 瑞安 机械有限公司| 机械设备有限公司经营范围| 合肥中辰轻工机械有限公司| 郑州华宏机械设备有限公司| 洛阳奥图机械设备有限公司| 上海七洋液压机械有限公司 | 如皋市联创捏合机械有限公司| 渡边食品机械有限公司| 宝索机械制造有限公司| 上海炬钢机械制造有限公司| 南通虹波机械有限公司| 湖北昌胜机械设备制造有限公司| 昆明 机械制造 有限公司| 群韵饮料机械有限公司| 机械加工有限公司简介| 河北曙光机械有限公司| 苏州星光精密机械有限公司| 济南天宝钢铁有限公司| 浙江中力机械有限公司| 张家港同大机械有限公司| 沈阳重型机械有限公司| 昆山奥德机械有限公司| 宁波美亚特精密机械有限公司| 宁波工业机械有限公司| 常州日月机械有限公司| 事必得精密机械有限公司| 海顺机械台州有限公司| 安丘博阳机械制造有限公司| 渤海重工管道有限公司| 泉州群峰机械有限公司| 诸暨市 机械有限公司| 台州市双辉机械设备有限公司| 宁波顺兴机械制造有限公司| 东阳市佳先机械制造有限公司| 新劲力机械有限公司| 旭恒精工机械制造有限公司 | 广东仕诚塑料机械有限公司 | 青岛华磊塑料机械有限公司| 上海巨远塑料机械有限公司| 成都诚旭精密机械有限公司| 重村钢模机械工业苏州有限公司| 沈阳机械制造有限公司| 东莞市康机械有限公司| 济南帕特机械有限公司| 宁波五峰机械有限公司| 佛山市劲雄机械有限公司| 江苏昆仑钢铁有限公司| 合肥方圆机械有限公司| 郑州一本机械设备有限公司| 温州市顺达服装机械有限公司 | 沈阳西城钢铁有限公司| 常州泉汇机械有限公司| 重庆宏工工程机械有限公司| 泰兴市立君机械设备有限公司| 武汉 机械制造有限公司| 山东重型机械有限公司| 上海本优机械有限公司| 鑫宏机械制造有限公司| 厦门机械制造有限公司| 瑞安包装机械有限公司| 东莞市卓越机械有限公司招聘| 扬州 机械设备 有限公司| 恒瑞机械制造有限公司| 广东 钢铁 有限公司| 江苏润明机械设备有限公司怎么样 | 中核 天津 机械有限公司| 山东山工机械有限公司| 深圳塑胶机械有限公司| 河北冠能石油机械制造有限公司 | 济宁萨奥机械有限公司| 龙扬机械)有限公司| 张家港 机械设备有限公司| 天津市机械设备有限公司| 广州市广花包装机械有限公司| 机械(昆山)有限公司| 河南起重机有限公司| 南通国盛精密机械有限公司 | 上海高敦精密机械有限公司| 衡阳运输机械有限公司| 日照机械制造有限公司| 临西中伟机械有限公司| 腾飞机械有限公司地址| 郑州万谷机械有限公司| 首钢伊犁钢铁有限公司| 在天精密机械有限公司| 阜新恒泰机械有限公司| 章丘宇龙机械有限公司| 上海丁博重工机械有限公司| 上海 包装机械 有限公司| 温州新派机械有限公司| 杭州山虎机械有限公司| 鞍山机械重工有限公司| 上海杰姆博机械设备有限公司| 宁波震德机械制造有限公司| 平湖英厚机械有限公司| 龙腾机械制造有限公司| 山东九环石油机械有限公司 | 大连地拓重工有限公司怎么样| 中航起落架有限公司| 成都固特机械有限公司| 合肥浩凯机械有限公司| 沈阳祺盛机械有限公司| 浙江中益机械有限公司| 光大机械厂有限公司| 天津市仁翼钢铁有限公司| 青岛海诺机械制造有限公司| 泰安通远机械有限公司| 台州瑞达机械有限公司| 山矿机械设备有限公司| 苏州君驰联动机械有限公司| 郑州博源机械有限公司| 河南云天起重机械有限公司| 济南聚鑫机械有限公司| 武汉钢铁有限公司疫情| 宁波正凯机械有限公司| 天津市申成包装机械有限公司| 浙江珠峰机械有限公司| 铭诚机械制造有限公司| 青岛海佳机械有限公司| 湖南天拓重工有限公司| 厦门机械制造有限公司| 恩比尔(厦门)机械制造有限公司| 南安市机械有限公司| 重庆志成机械有限公司| 邯郸市机械有限公司| 四川久进机械制造有限公司 | 昆明 机械 有限公司| 上海升立机械制造有限公司| 温州 机械有限公司| 山东力王重工机械有限公司| 河南省化工机械制造有限公司| 江苏天泽精工机械有限公司| 瑞鼎精密机械有限公司| 连云港机械制造有限公司| 潍坊凯隆机械有限公司| 重庆渝辉机械有限公司| 北京晨光兴业机械有限公司| 嘉厨食品机械有限公司| 深圳市稻田包装机械有限公司| 苏州启点机械有限公司| 福建三嘉钢铁有限公司| 上海 输送机械有限公司| 裕民机械工业有限公司| 唐山机械制造有限公司| 上海申德机械有限公司| 太仓鸿安机械有限公司| 南京彩途机械设备有限公司 | 苏州艾卓精密机械有限公司| 河南隧通机械有限公司| 河北巨牛机械有限公司| 昆山环保机械有限公司| 嘉善远景机械有限公司| 上海冠龙阀门机械有限公司 | 南通丰威机械有限公司| 上海钢铁交易中心有限公司 | 江西中天机械有限公司| 上海宇减传动机械有限公司| 东风悦达起亚汽车有限公司 | 沈阳重工食品有限公司| 昆山富邦机械有限公司| 河南起重机械有限公司| 郑州海特机械有限公司| 淄博宙灿机械有限公司| 上海液压机械有限公司| 鹰起重机械有限公司| 济南章力机械有限公司| 厦门银华机械有限公司| 唐山唐银钢铁有限公司| 昆山拓可机械有限公司| 洛阳天宇机械制造有限公司| 江苏省机械有限公司| 徐州市机械有限公司| 佛山慧谷机械有限公司| 江阴市博越机械有限公司| 济南钢铁 有限公司| 中船重工环境工程有限公司怎么样 | 济宁机械制造有限公司| 南京科倍隆机械有限公司| 三技精密机械有限公司| 兰州长征机械有限公司| 三技精密机械有限公司| 安来动力机械有限公司| 潍坊凯信机械有限公司| 东铁机械制造有限公司| 邢台德龙钢铁有限公司招聘| 诸城隆泽机械有限公司| 浙江昌亨机械有限公司| 世创机械制造有限公司| 苏州海骏自动化机械有限公司| 上海紫光机械有限公司| 银三环机械有限公司| 海华机械制造有限公司| 无锡科创机械设计制造有限公司| 沧州机械制造有限公司| 徐州恒辉编织机械有限公司| 上海全众机械有限公司| 合肥工程机械有限公司| 佛山钢铁贸易有限公司| 江苏华光双顺机械制造有限公司| 东莞元渝机械有限公司| 上海方星机械设备制造有限公司 | 昆山铭世特精密机械有限公司| 众工机械机械有限公司| 常州亚美柯机械设备有限公司 | 广州华研精密机械有限公司| 创世纪机械有限公司| 江苏新技机械有限公司| 福建东亚机械有限公司| 宁波延晟机械有限公司| 洛北重工机械有限公司| 山东莱工机械制造有限公司| 大连德机械有限公司| 湖北鄂钢扬子重型机械制造有限公司 | 重庆万凯机械有限公司| 江苏卫东机械有限公司| 智能机械设备有限公司| 大庆机械制造有限公司| 中核华兴达丰工程机械有限公司| 杭州东田机械有限公司| 赛尔透平机械有限公司| 中山艾能机械有限公司| 湖北机械设备有限公司| 沧州卓鑫机械设备制造有限公司 | 东莞凯格精密机械有限公司| 河北宏发机械有限公司| 大连 工程机械有限公司| 合肥汉杰包装机械喷码有限公司| 绵阳科睿机械有限公司| 常州曼恩机械有限公司| 深圳 机械设备有限公司| 浙江陀曼精密机械有限公司| 永达机械制造有限公司| 苏州牧天动力机械有限公司| 芜湖仅一机械有限公司| 东莞市印刷机械有限公司| 无锡宝业机械有限公司| 南昌机械设备有限公司| 江苏源德机械有限公司| 长沙中京机械有限公司| 常州起重机械有限公司| 青州康达机械有限公司| 珠海市中鑫隆机械化建设工程有限公司| 三一众力机械有限公司| 浙江传动机械有限公司| 山东华雄机械有限公司| 北京复盛机械有限公司| 南京贝隆齐机械有限公司| 山西万泽锦达机械制造有限公司| 杭州长虹机械有限公司| 旺磐精密机械有限公司| 漳州三宝钢铁有限公司| 浙江鼎力机械有限公司| 山东长城起重机械有限公司 | 上海七洋液压机械有限公司| 昆山机械 有限公司| 苏州擎邦机械有限公司| 广西机械制造有限公司| 宣化华泰矿冶机械有限公司| 陕西机械设备有限公司| 青岛仕诚塑料机械有限公司| 昆明 机械制造 有限公司| 广州市日富包装机械有限公司| 浙江兴盛机械有限公司| 青岛吉瑞特机械制造有限公司 | 成都海科机械设备制造有限公司| 山东创铭机械有限公司| 上海朗惠包装机械有限公司| 中意机械苏州有限公司| 深圳市塑胶机械有限公司| 大连船舶重工船业有限公司| 泰田液压机械有限公司| 苏州精锐精密机械有限公司| 西安柳工机械有限公司| 泉州市工程机械有限公司| 河南省矿山起重机械有限公司| 上海北阅机械设备有限公司 | 常州 机械有限公司| 唐山宝泰钢铁有限公司| 深圳优捷机械有限公司| 景隆重工机械有限公司| 无锡好麦机械有限公司| 郑州谷丰机械设备有限公司| 岳阳神冈起重电磁铁有限公司| 江阴古川机械有限公司| 邯郸市机械有限公司| 厦门大禾众邦机械有限公司| 苏州力强机械制造有限公司| 湖南机械设备有限公司| 江苏红旗印染机械有限公司 | 上海信烨精密机械有限公司| 市瑞港机械有限公司| 宁波德霖机械有限公司| 济南中唐机械设备有限公司| 济宁朝阳机械有限公司| 鑫盛机械制造有限公司| 大连卓远重工有限公司| 上海宾迪机械设备有限公司| 上海天勇机械设备有限公司| 宝鸡石油机械有限公司| 江苏腾通包装机械有限公司| 上海磊友成套机械设备有限公司| 缙云县机械有限公司| 广东粤韶钢铁有限公司| 常州动力机械有限公司| 江西江锻重工有限公司| 武汉九州龙工程机械有限公司| 曲阜兴运输送机械设备有限公司| 天津千百顺钢铁贸易有限公司| 青岛正机械有限公司| 安徽中科光电色选机械有限公司| 戴氏印刷机械有限公司| 台州市双辉机械设备有限公司| 柳州瑞利机械有限公司| 青岛华牧机械有限公司| 温州奋起皮业有限公司| 浙江森工木工机械有限公司| 深圳海邻机械设备有限公司| 好烤克食品机械有限公司| 无锡宝业机械有限公司| 江阴力达机械有限公司| 常矿起重机械有限公司| 威海泓意机械有限公司| 无锡布勒机械有限公司| 山东康弘机械有限公司| 常州机械制造有限公司| 山东永锋钢铁有限公司| 浙江新德宝机械有限公司| 四川凌峰航空液压机械有限公司| 陕西柴油机重工有限公司| 上海伍行机械设备有限公司| 无锡新麦机械有限公司| 河南龙昌机械制造有限公司| 张家港市饮料机械有限公司| 上海制药机械有限公司| 武汉船舶重工有限公司| 北默压缩机械有限公司| 广州新成机械技术有限公司| 艾瑞精密机械有限公司| 佐竹机械苏州有限公司| 百事德机械江苏有限公司| 顺德机械设备有限公司| 浙江麒龙起重机械有限公司| 芜湖汇丰机械工业有限公司| 泰安煤矿机械有限公司| 山东华珠机械有限公司| 天翔机械制造有限公司| 江苏海特尔机械有限公司| 东莞市从创机械有限公司| 青岛永正化工机械有限公司| 河南合力起重机械有限公司| 南通中远重工有限公司| 郑州重型机械有限公司| 上海金恒机械制造有限公司| 优瑞纳斯液压机械有限公司| 浙江金奔机械制造有限公司| 晋江机械制造有限公司| 南通友德机械有限公司| 宁波正凯机械有限公司| 河北工程机械有限公司| 青岛德固特机械制造有限公司| 山东大汉建设机械有限公司| 青岛三益塑料机械有限公司| 广州工程机械有限公司| 常州超通机械有限公司| 曲阜机械设备有限公司| 郑州市机械有限公司| 山东精诺机械有限公司| 杭州瑞东机械有限公司| 上海与鑫机械有限公司| 上海乾享机械设备有限公司| 温州威特机械有限公司| 天津传动机械有限公司| 淄博宙灿机械有限公司| 麻阳金湘钢铁有限公司| 百斯特机械有限公司| 顺德富华工程机械制造有限公司 | 河南星光机械有限公司| 莱州市龙骏化工机械有限公司| 郑州米格机械有限公司| 盐城 机械 有限公司| 浙江齐鲤机械有限公司| 龙文机械设备有限公司| 力华机械设备有限公司| 宁波固奇包装机械制造有限公司| 山东硕诚机械有限公司| 塑料机械 有限公司| 河南双象机械有限公司| 广州闽欣机械设备有限公司| 浙江上易机械有限公司| 徐州智茸工程机械有限公司| 广东明华机械有限公司| 绍兴越发机械有限公司| 山东机械设备制造有限公司| 广州萱裕机械有限公司| 合肥明泰机械施工有限公司| 起重机制造有限公司| 盐城市成功机械制造有限公司 | 浙江赛力机械有限公司| 派菲奥机械有限公司| 邢台德龙钢铁有限公司| 泰安古河机械有限公司| 浙江安奇迪动力机械有限公司 | 河北水利机械有限公司| 贵阳长乐钢铁有限公司| 福建盛达机械有限公司| 桐乡 机械有限公司| 东莞市台钢机械设备有限公司| 苏州工业园区嘉宝精密机械有限公司| 华电重工装备有限公司| 唐山凯恒钢铁有限公司| 武汉四方圆机械设备有限公司| 浙江鼎力机械有限公司| 涿州北方重工设备设计有限公司| 台州工交机械有限公司| 佛山市松可包装机械有限公司| 云南旷迪机械有限公司| 杭州 尔机械有限公司| 宁波天瑞精工机械有限公司| 郑州江河重工有限公司| 广州磊蒙机械设备有限公司| 东莞市高臻机械设备有限公司| 无锡市双瑞机械有限公司| 深圳中施机械设备有限公司| 大洋食品机械有限公司| 雷肯农业机械有限公司| 无锡鹰普机械有限公司| 昆山尚亦精密机械有限公司| 江阴新迪机械有限公司| 昆山乔地精密机械有限公司| 鹤壁市双信矿山机械有限公司| 南京益腾机械制造有限公司| 建筑机械租赁有限公司| 河南启瀚机械设备有限公司| 河南 机械制造有限公司| 河南铁山起重设备有限公司| 上海紫光机械有限公司| 洛北重工机械有限公司| 富信成机械有限公司| 杭州萧山凯兴食品机械有限公司| 徐州徐工随车起重机有限公司| 无锡诺亚机械有限公司| 巩义市瑞赛克机械设备有限公司| 北京包装机械有限公司| 海沃机械扬州有限公司| 扬州鼎隆机械有限公司| 上海华襄机械有限公司| 常州制药机械有限公司| 京龙工程机械有限公司| 山东威宝机械有限公司| 广州博创机械有限公司| 飞迈烟台机械有限公司| 济南 重工有限公司| 青岛数控机械有限公司| 友隆精密机械有限公司| 上海福源机械有限公司| 宇进注塑机械有限公司| 宁波延晟机械有限公司| 临沂新天力机械有限公司| 邯郸新兴重型机械有限公司| 兰州炊事机械有限公司| 洛阳泰红农业机械有限公司| 广州市荣艺食品机械有限公司| 江苏祥达机械制造有限公司| 河南小松工程机械有限公司| 大连龙尧塑料机械有限公司| 无锡威马机械有限公司| 张家港长力机械有限公司| 中山市翠山机械制造有限公司| 苏州杰威尔精密机械有限公司| 山东龙辉起重机械有限公司 | 江苏苏力机械有限公司| 华鑫机械制造有限公司| 长沙机械与制造有限公司| 京山力拓机械有限公司| 广东光信机械有限公司| 成都大华路面机械有限公司| 济南建设机械有限公司| 杭州兴达机械有限公司| 上海机械加工有限公司| 昆明呈钢钢铁有限公司| 温州佳诚机械有限公司| 成都工程机械有限公司| 昆山博通机械设备有限公司| 长沙起重机厂有限公司| 重庆庆达机械有限公司| 保定华光机械有限公司| 江苏冠宇机械设备制造有限公司| 南通苏诺特包装机械有限公司 | 东莞市雅康精密机械有限公司| 济宁高扬工程机械有限公司| 新乡市中天机械有限公司| 常熟神马机械有限公司| 中山市机械设备有限公司| 辽宁泰威机械制造有限公司| 机械(昆山)有限公司| 友池精密机械有限公司| 江阴铸造机械有限公司| 湖北川谷机械有限公司| 上海信机械有限公司| 上海树新机械有限公司| 吉林吉钢铁有限公司| 江苏飞耀机械制造有限公司| 石家庄机械设备有限公司| 江苏江佳机械有限公司| 无锡市川中五金机械有限公司| 金纬机械溧阳有限公司| 无纺布机械有限公司| 大连卓远重工有限公司| 苏州同鑫鸿精密机械有限公司| 上海百劲机械有限公司| 东莞达成机械设备制造有限公司| 云南机械设备有限公司| 福宁船舶重工有限公司| 烟台瑞进精密机械有限公司| 上海的纸箱机械有限公司| 德昌誉机械制造有限公司| 扬州华粮机械有限公司| 广州科盛隆纸箱包装机械有限公司 | 无锡通用机械有限公司| 浙江博创机械有限公司| 广东耐施特机械有限公司| 佛山 机械有限公司| 珠海三麦机械有限公司| 苏州派普机械有限公司| 江阴机械制造有限公司怎么样| 温州包装机械有限公司| 大连液力机械有限公司| 浙江四和机械有限公司| 无锡鹰贝机械有限公司| 广州众起办公用品有限公司| 无锡液压机械有限公司| 东风井关农业机械有限公司| 山东隆盛钢铁有限公司| 郑州华宏机械设备有限公司| 泰州市机械制造有限公司| 陕西柴油机重工有限公司| 龙口海盟机械有限公司| 无锡远方机械有限公司| 济南大鹏机械设备有限公司| 上海瑞阳机械有限公司| 江苏精密机械有限公司| 鑫宏机械制造有限公司| 常州机械设备有限公司| 青岛雷沃工程机械有限公司 | 吉林大华机械制造有限公司| 江苏汉鼎机械有限公司| 龙口富元机械有限公司| 昆明群泰机械有限公司| 上海捷舟工程机械有限公司| 河南豫弘重型机械有限公司| 广州力丰机械有限公司| 威海华丰机械有限公司| 合肥康恒机械有限公司| 常州艾隆精密机械有限公司| 南京神鹏机械设备有限公司 | 马鞍山 机械有限公司| 鑫盛机械制造有限公司| 郑州宇机械有限公司| 聊城机械设备有限公司| 济南包装机械械有限公司| 上海丁博重工机械有限公司| 苏福马机械有限公司| 浙江中兴机械制造有限公司| 潍坊凯隆机械有限公司| 重庆磐达机械有限公司| 漳州南方机械有限公司| 河北航天振邦精密机械有限公司| 南京化工机械有限公司| 河南省浩业矿山机械有限公司 | 杭州兴达机械有限公司| 南京建克机械有限公司| 梁山机械制造有限公司| 西安华欧精密机械有限公司| 高邮和益机械有限公司| 常州市昊博机械有限公司| 温州正雄机械有限公司| 芜湖仅一机械有限公司| 晋江海纳机械有限公司| 重庆动力机械有限公司| 新疆起亚铝业有限公司招聘| 章丘市宇龙机械有限公司| 湖南汇杰机械设备有限公司 | 浙江双环传动机械有限公司| 鼎盛机械设备有限公司| 南京利德盛机械有限公司| 宜昌 机械有限公司| 昆山鑫建诚机械设备有限公司| 大牧人机械有限公司| 福建东亚机械有限公司| 久隆久兴机械有限公司| 温州海翔机械有限公司| 广东富华机械装备制造有限公司 | 郑州市建新机械制造有限公司| 亿佰通机械有限公司| 常州宝菱重工机械有限公司| 重庆钢实机械有限公司| 路通重工机械有限公司| 广东粤韶钢铁有限公司| 宜春江特机械传动有限公司 | 东莞市高臻机械设备有限公司| 宁波敏达机械有限公司| 传动机械设备有限公司| 河南江河机械有限公司| 合肥市春华起重机械有限公司 | 浙江鼎业机械设备有限公司| 青岛辉特重工有限公司| 江苏省南扬机械制造有限公司| 念朋机械设备有限公司| 青岛木工机械有限公司| 青州汇众机械有限公司| 温州印刷机械有限公司| 南京嘉诚机械有限公司| 济南赛信机械有限公司| 兰州华诚石化机械制造有限公司| 邯郸纺织机械有限公司| 东莞市亚龙玻璃机械有限公司| 利星行机械有限公司| 南京东部精密机械有限公司| 曲阜机械设备有限公司| 东莞市铖铭机械有限公司| 四川蓝星机械有限公司| 四川盛和机械设备有限公司| 浙江勇力机械有限公司| 广州领新机械实业有限公司| 连云港 机械有限公司| 潍坊山水环保机械制造有限公司| 浙江双子机械制造有限公司 | 合肥包装机械有限公司| 浙江万龙机械有限公司| 华东造纸机械有限公司| 常州赛瑞克包装机械有限公司| 无锡市康晖机械制造有限公司| 嘉兴机械设备有限公司| 济南钢铁贸易有限公司| 无锡诺德传动机械有限公司 | 常熟 机械有限公司| 金昶泰机械设备有限公司 | 潍坊圣川机械有限公司| 沧州科信环保机械有限公司| 龙扬机械)有限公司| 小松工程机械有限公司| 安宁永昌钢铁有限公司| 山东铭德机械有限公司| 三鑫重工机械有限公司| 三一海洋重工有限公司| 瑞安市瑞博机械有限公司| 浙江天联机械有限公司| 河北东方富达机械有限公司| 成都鑫泽机械有限公司| 桂林恒达矿山机械有限公司| 青岛联瑞精密机械有限公司 | 上海方星机械设备制造有限公司 | 济南食品机械有限公司| 河北普阳钢铁有限公司| 北京液压机械有限公司| 金坛包装机械有限公司| 杭州杭达机械有限公司| 咸阳机械制造有限公司| 辽宁 机械制造有限公司| 东莞市雅康精密机械有限公司 | 上海起思宠物有限公司| 上海昱钢包装机械有限公司| 浙江兴发机械有限公司| 济南天助升降机械有限公司| 萨驰华辰机械 苏州 有限公司 | 农业机械制造有限公司| 如皋市通达机械制造有限公司| 江阴中立机械工业有限公司| 诸城晶品机械有限公司| 深圳市海德精密机械有限公司| 河北太行机械工业有限公司| 重型机械设备有限公司| 珠海康信精密机械有限公司| 东莞市通盛机械有限公司 | 宁波永博机械制造有限公司| 山西中阳钢铁有限公司| 潍坊 机械有限公司| 新金山钢铁有限公司| 保东农业机械有限公司| 鑫达机械设备有限公司| 昆成机械制造有限公司| 诚辉机械制造有限公司| 上海汉虹精密机械有限公司| 青岛明高机械有限公司| 温岭永进机械有限公司| 起重机制造有限公司| 昆山机械设备有限公司| 中山冠力机械有限公司| 国机铸锻机械有限公司| 苏州锐豪机械制造有限公司 | 重庆机械设备有限公司| 湘潭丰弘机械制造有限公司 | 郑州新水工机械有限公司| 北京航天振邦精密机械有限公司| 安徽起重机械有限公司| 上海世达机械工具厂有限公司| 江苏舜工机械有限公司| 定州市至信机械制造有限公司| 舟山荣德机械有限公司| 鑫阳机械设备有限公司| 厦门珀挺机械有限公司| 山东泰安煤矿机械有限公司| 北京火车头机械设备有限公司| 上海鸿尔机械有限公司| 河北鑫晟机械有限公司| 穗华机械设备有限公司| 重庆 机械制造有限公司| 淄博联泰机械有限公司| 东莞机械制造有限公司| 宁波健信机械有限公司| 江苏润山机械有限公司| 浙江华球机械制造有限公司| 广州新麦机械有限公司| 山东讴神机械制造有限公司| 山东明美数控机械有限公司| 张家港市鑫港机械有限公司| 同向精密机械有限公司| 天津千百顺钢铁贸易有限公司| 市瑞港机械有限公司| 东莞宏起塑胶电子有限公司| 上海振华重工有限公司| 唐山市钢铁有限公司| 东莞市业佳精密机械有限公司| 江阴中南重工有限公司| 广州市科展机械设备有限公司| 烟台鼎科机械有限公司| 邹平 机械有限公司| 河北州科重工有限公司| 新昌华亿机械有限公司| 河南安普包装机械制造有限公司 | 杭州纺织机械有限公司| 山东荣利中石油机械有限公司| 珠海裕丰钢铁有限公司| 有限公司名字起名大全| 诚辉机械制造有限公司| 温岭林大机械有限公司| 泰而勒食品机械贸易(上海)有限公司 | 东莞瑞辉机械有限公司| 东莞市金坤机械设备有限公司 | 新宝泰钢铁有限公司| 青岛昌源隆纺织机械有限公司| 常州创机械有限公司| 龙口金正机械有限公司| 烟台海州机械有限公司| 美心翼申机械有限公司| 济南艺高数控机械有限公司| 沈阳世润重工有限公司| 东莞市力华机械设备有限公司 | 上海沪工起重机械有限公司| 苏州福润机械有限公司| 格润德机械制造有限公司| 上海机械制造有限公司| 上海星申机械有限公司| 佛山市信虹精密机械有限公司 | 上海相宜机械有限公司| 青岛科尼乐重工有限公司| 山东纺织机械有限公司| 成都望锦机械有限公司| 河南省浩业矿山机械有限公司| 江苏炬峰机械有限公司| 润源经编机械有限公司| 桂林正东机械制造有限公司| 郑州天龙机械有限公司| 聊城日发纺织机械有限公司| 河南黎明路桥重工有限公司| 人科机械设备有限公司| 常州道铖精密机械有限公司| 常州市锦益机械有限公司| 潍坊 机械有限公司| 重型机械制造有限公司| 汕头 机械有限公司招聘| 张家港精密机械有限公司| 博阳机械制造有限公司| 首都航天机械有限公司| 南通 机械 有限公司| 蔚蓝机械设备有限公司| 山东鲁成起重机械有限公司| 广州起航贸易有限公司| 大连胜龙包装机械有限公司| 辽宁三君工程机械有限公司| 苏州捷合机械有限公司| 烟台鼎科机械有限公司| 广东金凯锐机械技术有限公司| 苏州丰裕机械工程有限公司| 常州都可机械有限公司| 金旺机械设备有限公司| 山东岳峰起重机械有限公司| 廊坊机械制造有限公司| 扬州扬宝机械有限公司| 徐州丰展机械有限公司| 济南速雕数控机械有限公司| 潍坊大众机械有限公司| 苏州铭峰精密机械有限公司| 上海诺 机械有限公司| 苏州恒威海绵机械有限公司|