The capability to dereference pointers has been added to methodByName(), improving method lookup on binary values. Wrapping to valueInterface is performed in a missing use case at return of function calls. It was done in the nested call, but not at assign. Fixes #1330.
43 lines
561 B
Go
43 lines
561 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net"
|
|
)
|
|
|
|
type wrappedConn struct {
|
|
net.Conn
|
|
}
|
|
|
|
func main() {
|
|
_, err := net.Listen("tcp", "127.0.0.1:49153")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
dialer := &net.Dialer{
|
|
LocalAddr: &net.TCPAddr{
|
|
IP: net.ParseIP("127.0.0.1"),
|
|
Port: 0,
|
|
},
|
|
}
|
|
|
|
conn, err := dialer.Dial("tcp", "127.0.0.1:49153")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer conn.Close()
|
|
|
|
t := &wrappedConn{conn}
|
|
var w io.Writer = t
|
|
if n, err := w.Write([]byte("hello")); err != nil {
|
|
fmt.Println(err)
|
|
} else {
|
|
fmt.Println(n)
|
|
}
|
|
}
|
|
|
|
// Output:
|
|
// 5
|