Server IP : 2a02:4780:11:1359:0:1d43:a566:2 / Your IP : 216.73.216.161 Web Server : LiteSpeed System : Linux in-mum-web1259.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64 User : u490972518 ( 490972518) PHP Version : 5.6.40 Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF Directory (0755) : /home/../opt/golang/1.19.4/test/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
// 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 behavior of the blank identifier (_). package main import ( "os" "unsafe" ) import _ "fmt" var call string type T struct { _, _, _ int } func (T) _() { } func (T) _() { } type U struct { _ struct{ a, b, c int } } const ( c0 = iota _ _ _ c4 ) var ints = []string{ "1", "2", "3", } func f() (int, int) { call += "f" return 1, 2 } func g() (float64, float64) { call += "g" return 3, 4 } func h(_ int, _ float64) { } func i() int { call += "i" return 23 } var _ = i() func main() { if call != "i" { panic("init did not run") } call = "" _, _ = f() a, _ := f() if a != 1 { panic(a) } b, _ := g() if b != 3 { panic(b) } _, a = f() if a != 2 { panic(a) } _, b = g() if b != 4 { panic(b) } _ = i() if call != "ffgfgi" { panic(call) } if c4 != 4 { panic(c4) } out := "" for _, s := range ints { out += s } if out != "123" { panic(out) } sum := 0 for s := range ints { sum += s } if sum != 3 { panic(sum) } // go.tools/ssa/interp cannot support unsafe.Pointer. if os.Getenv("GOSSAINTERP") == "" { type T1 struct{ x, y, z int } t1 := *(*T)(unsafe.Pointer(&T1{1, 2, 3})) t2 := *(*T)(unsafe.Pointer(&T1{4, 5, 6})) if t1 != t2 { panic("T{} != T{}") } var u1, u2 interface{} u1 = *(*U)(unsafe.Pointer(&T1{1, 2, 3})) u2 = *(*U)(unsafe.Pointer(&T1{4, 5, 6})) if u1 != u2 { panic("U{} != U{}") } } h(a, b) m() } type I interface { M(_ int, y int) } type TI struct{} func (_ TI) M(x int, y int) { if x != y { println("invalid M call:", x, y) panic("bad M") } } var fp = func(_ int, y int) {} func init() { fp = fp1 } func fp1(x, y int) { if x != y { println("invalid fp1 call:", x, y) panic("bad fp1") } } func m() { var i I i = TI{} i.M(1, 1) i.M(2, 2) fp(1, 1) fp(2, 2) } // useless but legal var _ int = 1 var _ = 2 var _, _ = 3, 4 const _ = 3 const _, _ = 4, 5 type _ int func _() { panic("oops") } func ff() { var _ int = 1 }