关于golang语法的一个问题

今天看go语言net包下的代码时有些疑惑先上代码,有疑问的语句用注视标出来了://NewRequestreturnsanewRequestgivenamethod,URL,andoptionalbody.
funcNewRequest(method,urlStrstring,bodyio.Reader)(*Request,error){
	u,err:=url.Parse(urlStr)
	iferr!=nil{
		returnnil,err
	}
	rc,ok:=body.(io.ReadCloser)//这条语句是什么意思
	if!ok&&body!=nil{
		rc=ioutil.NopCloser(body)
	}
	req:=&Request{
		Method:method,
		URL:u,
		Proto:"HTTP/1.1",
		ProtoMajor:1,
		ProtoMinor:1,
		Header:make(Header),
		Body:rc,
		Host:u.Host,
	}
	ifbody!=nil{
		switchv:=body.(type){//这里也不懂
		case*strings.Reader:
			req.ContentLength=int64(v.Len())
		case*bytes.Buffer:
			req.ContentLength=int64(v.Len())
		}
	}
	returnreq,nil
}以上两条语句都是在.后接括号,这种语法是什么意思?是go里面特有的么?
一只萌萌小番薯
浏览 286回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript