Как в Go создать «конструктор» для типа со строковым базовым типом?

пытается иметь тип Char , который является строкой длиной в один символ. что я не могу сделать, так это создать «конструктор». Я знаю, что упускаю что-то совершенно очевидное.

объявляют, что тип Char

  type Char string

может использовать этот тип с объявлением

  var c1 Char("abc")
  var c2 Char = "abc"

, это неверно: c1 и c2 должны быть "a ", а не" abc "

то, что мне действительно нужно, это" конструктор ", чтобы ограничить Char одним символом

 func Char( s string ) Char {
   var ch string = s[0]
   return ch
 }

, конечно, имеющий тип Char и func Char не способ сделать это

 type.go:8: Char redeclared in this block

есть ли способ принудительно инициализировать тип через конструктор? или я вообще задаю правильный вопрос?

позвольте мне заявить иначе: если пользователь скажет var c Char = "abc" , у него будет недопустимое значение для типа Char - есть ли способ заставить пользователя использовать func NewChar (string) Char как Char единственный допустимый конструктор?

12
задан peterSO 21 June 2011 в 11:46
поделиться