// Copyright 2012 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. // unary expressions package expr0 type mybool bool var ( // bool b0 = true b1 bool = b0 b2 = !true b3 = !b1 b4 bool = !true b5 bool = !b4 b6 = +b0 /* ERROR "not defined" */ b7 = -b0 /* ERROR "not defined" */ b8 = ^b0 /* ERROR "not defined" */ b9 = *b0 /* ERROR "cannot indirect" */ b10 = &true /* ERROR "cannot take address" */ b11 = &b0 b12 = <-b0 /* ERROR "cannot receive" */ b13 = & & /* ERROR "cannot take address" */ b0 // byte _ = byte(0) _ = byte(- /* ERROR "cannot convert" */ 1) _ = - /* ERROR "-byte\(1\) \(constant -1 of type byte\) overflows byte" */ byte(1) // test for issue 11367 _ = byte /* ERROR "overflows byte" */ (0) - byte(1) // int i0 = 1 i1 int = i0 i2 = +1 i3 = +i0 i4 int = +1 i5 int = +i4 i6 = -1 i7 = -i0 i8 int = -1 i9 int = -i4 i10 = !i0 /* ERROR "not defined" */ i11 = ^1 i12 = ^i0 i13 int = ^1 i14 int = ^i4 i15 = *i0 /* ERROR "cannot indirect" */ i16 = &i0 i17 = *i16 i18 = <-i16 /* ERROR "cannot receive" */ // uint u0 = uint(1) u1 uint = u0 u2 = +1 u3 = +u0 u4 uint = +1 u5 uint = +u4 u6 = -1 u7 = -u0 u8 uint = - /* ERROR "overflows" */ 1 u9 uint = -u4 u10 = !u0 /* ERROR "not defined" */ u11 = ^1 u12 = ^i0 u13 uint = ^ /* ERROR "overflows" */ 1 u14 uint = ^u4 u15 = *u0 /* ERROR "cannot indirect" */ u16 = &u0 u17 = *u16 u18 = <-u16 /* ERROR "cannot receive" */ u19 = ^uint(0) // float64 f0 = float64(1) f1 float64 = f0 f2 = +1 f3 = +f0 f4 float64 = +1 f5 float64 = +f4 f6 = -1 f7 = -f0 f8 float64 = -1 f9 float64 = -f4 f10 = !f0 /* ERROR "not defined" */ f11 = ^1 f12 = ^i0 f13 float64 = ^1 f14 float64 = ^f4 /* ERROR "not defined" */ f15 = *f0 /* ERROR "cannot indirect" */ f16 = &f0 f17 = *u16 f18 = <-u16 /* ERROR "cannot receive" */ // complex128 c0 = complex128(1) c1 complex128 = c0 c2 = +1 c3 = +c0 c4 complex128 = +1 c5 complex128 = +c4 c6 = -1 c7 = -c0 c8 complex128 = -1 c9 complex128 = -c4 c10 = !c0 /* ERROR "not defined" */ c11 = ^1 c12 = ^i0 c13 complex128 = ^1 c14 complex128 = ^c4 /* ERROR "not defined" */ c15 = *c0 /* ERROR "cannot indirect" */ c16 = &c0 c17 = *u16 c18 = <-u16 /* ERROR "cannot receive" */ // string s0 = "foo" s1 = +"foo" /* ERROR "not defined" */ s2 = -s0 /* ERROR "not defined" */ s3 = !s0 /* ERROR "not defined" */ s4 = ^s0 /* ERROR "not defined" */ s5 = *s4 s6 = &s4 s7 = *s6 s8 = <-s7 // channel ch chan int rc <-chan float64 sc chan <- string ch0 = +ch /* ERROR "not defined" */ ch1 = -ch /* ERROR "not defined" */ ch2 = !ch /* ERROR "not defined" */ ch3 = ^ch /* ERROR "not defined" */ ch4 = *ch /* ERROR "cannot indirect" */ ch5 = &ch ch6 = *ch5 ch7 = <-ch ch8 = <-rc ch9 = <-sc /* ERROR "cannot receive" */ ch10, ok = <-ch // ok is of type bool ch11, myok = <-ch _ mybool = myok /* ERROR "cannot use .* in variable declaration" */ ) // address of composite literals type T struct{x, y int} func f() T { return T{} } var ( _ = &T{1, 2} _ = &[...]int{} _ = &[]int{} _ = &[]int{} _ = &map[string]T{} _ = &(T{1, 2}) _ = &((((T{1, 2})))) _ = &f /* ERROR "cannot take address" */ () ) // recursive pointer types type P *P var ( p1 P = new(P) p2 P = *p1 p3 P = &p2 ) func g() (a, b int) { return } func _() { _ = -g /* ERROR 2-valued g */ () _ = <-g /* ERROR 2-valued g */ () } // ~ is accepted as unary operator only permitted in interface type elements var ( _ = ~ /* ERROR cannot use ~ outside of interface or type constraint */ 0 _ = ~ /* ERROR cannot use ~ outside of interface or type constraint */ "foo" _ = ~ /* ERROR cannot use ~ outside of interface or type constraint */ i0 )