403Webshell
Server IP : 147.79.69.201  /  Your IP : 216.73.217.88
Web Server : LiteSpeed
System : Linux in-mum-web1677.main-hosting.eu 5.14.0-611.55.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 19 15:19:29 EDT 2026 x86_64
User : u635632881 ( 635632881)
PHP Version : 8.2.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/golang/1.22.0/test/interface/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/golang/1.22.0/test/interface//fake.go
// 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()
*/

Youez - 2016 - github.com/yon3zu
LinuXploit