paxPayment, ok = dataObject.(*entities.PassengerPayment)
括号用于什么?我不确定这个赋值操作中发生了什么.
您还需要更多细节才能回答这个问题吗?
例如,在这个答案中:
...
if exiterr, ok := err.(*exec.ExitError); ok {
...
Run Code Online (Sandbox Code Playgroud)
这叫什么err.(*exec.ExitError) ?它是如何工作的?
Go Newb 这里——我遇到了以下我没有编写的 Go 代码
if tc, ok := tng.(ThingClasser); ok {
//... do some stuff ...
}
Run Code Online (Sandbox Code Playgroud)
我不会理解 的语义tng.(ThingClasser)。
在某些方面,这看起来像一个方法调用——即有两个变量(ec,ok)坐在那里准备接受多个返回值。
然而,tng.(ThingClasser)它本身看起来像是属性访问,而不是方法调用。
然而,周围的括号ThingClasser是我以前从未见过的皱纹。另外,如果重要的话,该ThingClasser符号在该项目的其他地方被定义为接口,所以我认为这可能是围绕“是否实现接口”的一些语法糖——但是两个返回值让我感到困惑。
谷歌搜索没有找到任何具体的东西,但这是谷歌搜索中最困难的事情之一。
这里有谁知道 GoLang 中的这个调用/语法是什么,并可能给我指出相关的手册页,以便我可以 RTFM?
我最近开始寻找功能性的go示例,并发现了以下功能:
mapper := func (i interface{}) interface{} {
return strings.ToUpper(i.(string))
}
Map(mapper, New(“milu”, “rantanplan”))
//[“MILU”, “RANTANPLAN”]
Run Code Online (Sandbox Code Playgroud)
现在在此函数中,您可以看到returnmapper 的值是:
strings.ToUpper(i.(string))。
但是,这种i.(string)语法是什么意思?我尝试搜索,但没有发现任何特别有用的信息。
我r.(flate.Reader)在golang的zlib/reader.go文件中找到了很多代码片段.这是什么意思?
https://golang.org/src/compress/zlib/reader.go
func (z *reader) Reset(r io.Reader, dict []byte) error {
if fr, ok := r.(flate.Reader); ok {
z.r = fr
} else {
z.r = bufio.NewReader(r)
}
// more code omitted ...
}
Run Code Online (Sandbox Code Playgroud)
PS的源代码io和flate.
io:https:
//golang.org/src/io/io.go flate:https://golang.org/src/compress/flate/inflate.go
我来了一个使用.(string)方法的代码.我不知道这叫什么,我很难找到它.
这是我尝试理解它:
package main
import "fmt"
import "reflect"
func main(){
var b interface{}
b = "silly"
fmt.Println(reflect.TypeOf(b.(string))) // we know that b
// is a string
// at compile time
fmt.Println(reflect.TypeOf(b)) // we do not
}
Run Code Online (Sandbox Code Playgroud)
结果:
string
string
Run Code Online (Sandbox Code Playgroud)
但是,我认为这reflect.TypeOf是在运行时发生的,同时.(string)会告诉编译器b确实是一个字符串,这可以用来告诉编译器变量是某种类型的.我的理解是对的吗?
我用Golang语言找到了以下代码
item.(Tweet)
Run Code Online (Sandbox Code Playgroud)
我已经知道每个变量都有一个方法。但是我不知道上面的代码。有人知道吗?