pass_valid_patterns.go raw

   1  package main
   2  
   3  type Point struct {
   4  	X int32
   5  	Y int32
   6  }
   7  
   8  func main() {
   9  	// & instead of new
  10  	p := &Point{X: 1, Y: 2}
  11  	if p.X == 1 && p.Y == 2 {
  12  		println("PASS: struct literal with &")
  13  	} else {
  14  		println("FAIL: struct literal with &")
  15  	}
  16  
  17  	// var + & instead of new(int32)
  18  	var n int32 = 42
  19  	ptr := &n
  20  	if *ptr == 42 {
  21  		println("PASS: var + &")
  22  	} else {
  23  		println("FAIL: var + &")
  24  	}
  25  
  26  	// Comma-separated cases instead of fallthrough
  27  	x := int32(2)
  28  	switch x {
  29  	case 1, 2, 3:
  30  		println("PASS: comma cases")
  31  	default:
  32  		println("FAIL: comma cases")
  33  	}
  34  
  35  	// All valid numeric types
  36  	var a int8 = 1
  37  	var b int16 = 2
  38  	var c int32 = 3
  39  	var d int64 = 4
  40  	var e uint8 = 5
  41  	var f uint16 = 6
  42  	var g uint32 = 7
  43  	var h uint64 = 8
  44  	var i float32 = 9.5
  45  	var j float64 = 10.5
  46  	var k byte = 11
  47  	var l bool = true
  48  	sum := int64(a) + int64(b) + int64(c) + d + int64(e) + int64(f) + int64(g) + int64(h)
  49  	if sum == 36 && i == 9.5 && j == 10.5 && k == 11 && l {
  50  		println("PASS: all valid types")
  51  	} else {
  52  		println("FAIL: all valid types")
  53  	}
  54  }
  55