code: func strEqualFold(s, p string) bool {
  	if len(s) != len(p) {
  		return false
  	}
  	n := len(s)
  	// Prepare manual conversion on bytes that not lay in uint64.
  	m := n % 8
  	for i := 0; i < m; i++ {
  		if s[i]|toLower != p[i]|toLower {
  			return false
  		}
  	}
  	// Iterate over uint64 parts of s.
  	n = (n - m) >> 3
  	if n == 0 {
  		// There are no bytes to compare.
  		return true
  	}
  
  	ah := *(*reflect.StringHeader)(unsafe.Pointer(&s))
  	ap := ah.Data + uintptr(m)
  	bh := *(*reflect.StringHeader)(unsafe.Pointer(&p))
  	bp := bh.Data + uintptr(m)
  
  	for i := 0; i < n; i, ap, bp = i+1, ap+8, bp+8 {
  		av := *(*uint64)(unsafe.Pointer(ap))
  		bv := *(*uint64)(unsafe.Pointer(bp))
  		if av|toLower8 != bv|toLower8 {
  			return false
  		}
  	}
  
  	return true
  }
docs: // strEqualFold checks s to be case insensitive equal to p.
  // Note that p must be only ascii letters. That is, every byte in p belongs to
  // range ['a','z'] or ['A','Z'].