template/scratch.go
func (s *Scratch) SetX(k string, v interface{}) string {
	s.init()

	s.Lock()
	defer s.Unlock()
	if _, ok := s.values[k]; !ok {
		s.values[k] = v
	}
	return ""
}
func (s *Scratch) SetX(k string, v interface{}) string {
	s.init()

	s.Lock()
	defer s.Unlock()
	if _, ok := s.values[k]; !ok {
		s.values[k] = v
	}
	return ""
}
func ( s * Scratch ) SetX ( k string , v interface { } ) string { s . init ( ) s . Lock ( ) defer s . Unlock ( ) if _ , ok := s . values [ k ] ; ! ok { s . values [ k ] = v } return " " }
// SetX behaves the same as Set, except it will not overwrite existing keys if
// already present.
SetX behaves the same as Set except it will not overwrite existing keys if already present .