OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.19.4
/
test
/
interface
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
馃搧
..
-
12/01/2022 06:13:56 PM
rwxr-xr-x
馃搫
assertinline.go
1.77 KB
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
bigdata.go
1.45 KB
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
convert.go
1.88 KB
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
convert1.go
393 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
convert2.go
393 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
embed.go
924 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搧
embed1.dir
-
12/01/2022 06:13:56 PM
rwxr-xr-x
馃搫
embed1.go
250 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
embed2.go
1.48 KB
12/01/2022 06:13:01 PM
rw-r--r--
馃搧
embed3.dir
-
12/01/2022 06:13:56 PM
rwxr-xr-x
馃搫
embed3.go
187 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
explicit.go
1.96 KB
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
fail.go
544 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
fake.go
1.75 KB
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
noeq.go
641 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
pointer.go
758 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搧
private.dir
-
12/01/2022 06:13:56 PM
rwxr-xr-x
馃搫
private.go
285 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
receiver.go
1.26 KB
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
receiver1.go
790 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
recursive.go
374 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搧
recursive1.dir
-
12/01/2022 06:13:56 PM
rwxr-xr-x
馃搫
recursive1.go
267 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
returntype.go
670 bytes
12/01/2022 06:13:01 PM
rw-r--r--
馃搫
struct.go
2.43 KB
12/01/2022 06:13:01 PM
rw-r--r--
Editing: fake.go
Close
// run // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Test interface comparisons using types hidden // inside reflected-on structs. package main import "reflect" type T struct { F float32 G float32 S string T string U uint32 V uint32 W uint32 X uint32 Y uint32 Z uint32 } func add(s, t string) string { return s + t } func assert(b bool) { if !b { panic("assert") } } func main() { var x T x.F = 1.0 x.G = x.F x.S = add("abc", "def") x.T = add("abc", "def") x.U = 1 x.V = 2 x.W = 1 << 28 x.X = 2 << 28 x.Y = 0x12345678 x.Z = x.Y // check mem and string v := reflect.ValueOf(x) i := v.Field(0) j := v.Field(1) assert(i.Interface() == j.Interface()) s := v.Field(2) t := v.Field(3) assert(s.Interface() == t.Interface()) // make sure different values are different. // make sure whole word is being compared, // not just a single byte. i = v.Field(4) j = v.Field(5) assert(i.Interface() != j.Interface()) i = v.Field(6) j = v.Field(7) assert(i.Interface() != j.Interface()) i = v.Field(8) j = v.Field(9) assert(i.Interface() == j.Interface()) } /* comparing uncomparable type float32 throw: interface compare panic PC=0x28ceb8 [1] throw+0x41 /Users/rsc/goX/src/runtime/runtime.c:54 throw(0x3014a, 0x0) ifaceeq+0x15c /Users/rsc/goX/src/runtime/iface.c:501 ifaceeq(0x2aa7c0, 0x0, 0x0, 0x0, 0x2aa7c0, ...) sys路ifaceeq+0x48 /Users/rsc/goX/src/runtime/iface.c:527 sys路ifaceeq(0x2aa7c0, 0x0, 0x0, 0x0, 0x2aa7c0, ...) main路main+0x190 /Users/rsc/goX/src/cmd/gc/x.go:10 main路main() mainstart+0xf /Users/rsc/goX/src/runtime/amd64/asm.s:53 mainstart() sys路Goexit /Users/rsc/goX/src/runtime/proc.c:124 sys路Goexit() */