| 
									
										
										
										
											2010-03-09 12:49:24 -08:00
										 |  |  | // $G $D/$F.go && $L $F.$A && ./$A.out | 
					
						
							| 
									
										
										
										
											2010-03-05 20:16:04 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-09 12:49:24 -08:00
										 |  |  | // Copyright 2010 The Go Authors. All rights reserved. | 
					
						
							| 
									
										
										
										
											2010-03-05 20:16:04 -08:00
										 |  |  | // Use of this source code is governed by a BSD-style | 
					
						
							|  |  |  | // license that can be found in the LICENSE file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import "unsafe" | 
					
						
							|  |  |  | import "reflect" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const ( | 
					
						
							|  |  |  | 	R = 5 | 
					
						
							|  |  |  | 	I = 6i | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	C1 = R + I // ADD(5,6) | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							|  |  |  | 	c0 := C1 | 
					
						
							| 
									
										
										
										
											2010-03-09 17:51:30 -08:00
										 |  |  | 	c0 = (c0 + c0 + c0) / (c0 + c0 + 3i) | 
					
						
							| 
									
										
										
										
											2010-03-05 20:16:04 -08:00
										 |  |  | 	println(c0) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-19 23:09:00 -05:00
										 |  |  | 	c := *(*complex128)(unsafe.Pointer(&c0)) | 
					
						
							| 
									
										
										
										
											2010-03-05 20:16:04 -08:00
										 |  |  | 	println(c) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var a interface{} | 
					
						
							| 
									
										
										
										
											2011-04-08 12:27:58 -04:00
										 |  |  | 	switch c := reflect.NewValue(a); c.Kind() { | 
					
						
							|  |  |  | 	case reflect.Complex64, reflect.Complex128: | 
					
						
							|  |  |  | 		v := c.Complex() | 
					
						
							| 
									
										
										
										
											2011-01-19 23:09:00 -05:00
										 |  |  | 		_, _ = complex128(v), true | 
					
						
							| 
									
										
										
										
											2010-03-05 20:16:04 -08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } |