| 
									
										
										
										
											2008-06-06 14:27:34 -07:00
										 |  |  | // $G $D/$F.go && $L $F.$A && ./$A.out | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | main() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	var c string; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	a := `abc`; | 
					
						
							|  |  |  | 	b := `xyz`; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* print a literal */ | 
					
						
							|  |  |  | 	print `abc`; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* print a variable */ | 
					
						
							|  |  |  | 	print b, "-"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* catenate literals */ | 
					
						
							|  |  |  | 	print `abc` + `xyz`, "-"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* catenate variables */ | 
					
						
							|  |  |  | 	print a+b, "-"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* compare literals */ | 
					
						
							|  |  |  | 	if `abc` == `xyz` || `abc` != "abc" || `abc` > `xyz` { | 
					
						
							|  |  |  | 		panic "compare literals"; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* compare variables */ | 
					
						
							|  |  |  | 	if a == b || a != a || a > b { | 
					
						
							|  |  |  | 		panic "compare variables"; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* cat */ | 
					
						
							|  |  |  | 	c = a+b; | 
					
						
							|  |  |  | 	print c, "-"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* catequal */ | 
					
						
							|  |  |  | 	c = a; | 
					
						
							|  |  |  | 	c += b; | 
					
						
							|  |  |  | 	print c, "-"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* clumsy evaluation */ | 
					
						
							|  |  |  | 	c = b; | 
					
						
							|  |  |  | 	c = a + c; | 
					
						
							|  |  |  | 	print c, "-"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* len */ | 
					
						
							|  |  |  | 	if len(c) != 6 { | 
					
						
							|  |  |  | 		panic "len ", len(c); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* index strings */ | 
					
						
							|  |  |  | 	for i:=0; i<len(c); i=i+1 { | 
					
						
							|  |  |  | 		if c[i] != (a+b)[i] { | 
					
						
							|  |  |  | 			panic "index ", i, " ", c[i], " ", (a+b)[i]; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* slice strings */ | 
					
						
							|  |  |  | 	print c[0:3], c[3:6]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	print "\n"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* create string with integer constant */ | 
					
						
							|  |  |  | 	c = string('x'); | 
					
						
							|  |  |  | 	if c != "x" { | 
					
						
							|  |  |  | 		panic "create int ", c; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* create string with integer variable */ | 
					
						
							|  |  |  | 	v := 'x'; | 
					
						
							|  |  |  | 	c = string(v); | 
					
						
							|  |  |  | 	if c != "x" { | 
					
						
							|  |  |  | 		panic "create int ", c; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* create string with byte array */ | 
					
						
							| 
									
										
										
										
											2008-06-21 15:08:04 -07:00
										 |  |  | 	var z1 [3]byte; | 
					
						
							|  |  |  | 	z1[0] = 'a'; | 
					
						
							|  |  |  | 	z1[1] = 'b'; | 
					
						
							|  |  |  | 	z1[2] = 'c'; | 
					
						
							|  |  |  | 	c = string(z1); | 
					
						
							| 
									
										
										
										
											2008-06-06 14:27:34 -07:00
										 |  |  | 	if c != "abc" { | 
					
						
							|  |  |  | 		panic "create array ", c; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* create string with byte array pointer */ | 
					
						
							| 
									
										
										
										
											2008-06-21 15:08:04 -07:00
										 |  |  | 	z2 := new([3]byte); | 
					
						
							|  |  |  | 	z2[0] = 'a'; | 
					
						
							|  |  |  | 	z2[1] = 'b'; | 
					
						
							|  |  |  | 	z2[2] = 'c'; | 
					
						
							|  |  |  | 	c = string(z2); | 
					
						
							| 
									
										
										
										
											2008-06-06 14:27:34 -07:00
										 |  |  | 	if c != "abc" { | 
					
						
							|  |  |  | 		panic "create array pointer ", c; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |