code: func haspathprefix(s string, t string) bool {
  	var i int
  	var cs int
  	var ct int
  	if len(t) > len(s) {
  		return false
  	}
  	for i = 0; i < len(t); i++ {
  		cs = int(s[i])
  		ct = int(t[i])
  		if 'A' <= cs && cs <= 'Z' {
  			cs += 'a' - 'A'
  		}
  		if 'A' <= ct && ct <= 'Z' {
  			ct += 'a' - 'A'
  		}
  		if cs == '\\' {
  			cs = '/'
  		}
  		if ct == '\\' {
  			ct = '/'
  		}
  		if cs != ct {
  			return false
  		}
  	}
  	return i >= len(s) || s[i] == '/' || s[i] == '\\'
  }
docs: // Does s have t as a path prefix?
  // That is, does s == t or does s begin with t followed by a slash?
  // For portability, we allow ASCII case folding, so that haspathprefix("a/b/c", "A/B") is true.
  // Similarly, we allow slash folding, so that haspathprefix("a/b/c", "a\\b") is true.