|  | // 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 string operations including printing. | 
|  |  | 
|  | 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 { | 
|  | print("len ", len(c)) | 
|  | panic("fail") | 
|  | } | 
|  |  | 
|  | /* index strings */ | 
|  | for i := 0; i < len(c); i = i + 1 { | 
|  | if c[i] != (a + b)[i] { | 
|  | print("index ", i, " ", c[i], " ", (a + b)[i]) | 
|  | panic("fail") | 
|  | } | 
|  | } | 
|  |  | 
|  | /* slice strings */ | 
|  | print(c[0:3], c[3:]) | 
|  |  | 
|  | 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 */ | 
|  | var z1 [3]byte | 
|  | z1[0] = 'a' | 
|  | z1[1] = 'b' | 
|  | z1[2] = 'c' | 
|  | c = string(z1[0:]) | 
|  | if c != "abc" { | 
|  | panic("create byte array " + c) | 
|  | } | 
|  |  | 
|  | /* create string with int array */ | 
|  | var z2 [3]rune | 
|  | z2[0] = 'a' | 
|  | z2[1] = '\u1234' | 
|  | z2[2] = 'c' | 
|  | c = string(z2[0:]) | 
|  | if c != "a\u1234c" { | 
|  | panic("create int array " + c) | 
|  | } | 
|  |  | 
|  | /* create string with byte array pointer */ | 
|  | z3 := new([3]byte) | 
|  | z3[0] = 'a' | 
|  | z3[1] = 'b' | 
|  | z3[2] = 'c' | 
|  | c = string(z3[0:]) | 
|  | if c != "abc" { | 
|  | panic("create array pointer " + c) | 
|  | } | 
|  | } |