共 7 个回复


fising

conn.(*dbConnection) 应该是属于类型断言(type assertion)

# 0

hejiajie1989

不是类型断言吧

你看pool里面的Acquire方法是从pool拿到缓存的对象,返回类型是io.Closer,即只要实现了Closer的对象都可以。dbConnection需要做一次类型转换的

# 2

fising

@jimmykuu 帮忙看看啊,看了 3 楼的回复我又糊涂了。

# 3

jimmykuu

io.Closer 是接口类型,接口只定义方法,不能直接拿到字段,要转换成 struct 实例才能拿到 ID 字段。

# 4

hejiajie1989

嗯 是的 interface里面是有iTable和ptr的,通过conn.(*dbConnection) 可以拿到真实的struct结构的实例

# 5

fising

@jimmykuu @hejiajie1989 这里应该属于类型断言。

返回的是接口类型,需要具体的 struct 才能调用自己的方法。

类型转换的语法:<目标类型> ( <表达式> )
类型断言的语法:<表达式>.( 目标类型 )

# 6