Thanks for clarifying that, @Brian. Yeah. It took a bit to warm up to that approach, but the github.com/jackc/pgtypes convinced me that the results were worth it. The benefits: A, package interpretation methods with a piece of data, B, lazily valuate data when needed, and C, gain introspective capability specific to the type and not using reflect On Friday, April 1, 2022 at 4:47:32 AM UTC-5 Brian Candler wrote:
> That wasn't literal code with anglebrackets - you're supposed to fill that > in yourself. I think he meant something like: > > type fooString struct{ string } > > https://go.dev/play/p/4Q94xMZDciV > > What this is doing is *embedding* a string value into a struct; if you > have not come across type embedding before then Google for the details. > > You still cannot use one of these types transparently as a string, but you > can use > x.string > instead of > string(x) > to extract the value. > > On Friday, 1 April 2022 at 06:48:04 UTC+1 yan.z...@gmail.com wrote: > >> Hi Sam! Your solution does not seem to work: >> >> package main >> >> import( >> "fmt" >> "strconv" >> ) >> >> type <Purpose> String struct{string} >> >> func (s String) print(){ >> fmt.Println(s) >> } >> >> func main() { >> var a String ="hello, world\n" >> >> a.print() >> >> fmt.Println(strconv.ParseInt("78",10, 64)) >> >> var x String ="452" >> >> n, _ := strconv.ParseInt(x, 10, 64) >> } >> >> 在2022年3月26日星期六 UTC+8 06:41:15<sam.a....@gmail.com> 写道: >> >>> >>> My workaround like is something like `type <Purpose>String >>> struct{string}. It can be reasonably treated as a string for most cases in >>> which as string is needed, and it lets you convert back conveniently from >>> any scope in which it's reasonable for your program to know the difference. >>> On Friday, March 18, 2022 at 12:46:34 AM UTC-5 Henry wrote: >>> >>>> My own preference is to have a small number of methods and put the >>>> general functionalities into functions. By putting the general >>>> functionalities into functions, you allow code reuse. In object-oriented >>>> programming, you normally attach as many functionalities as possible to >>>> their corresponding types and achieve code reuse via inheritance. Since Go >>>> does not have inheritance, you can achieve a similar effect with >>>> standalone >>>> functions. >>>> >>>> On Friday, March 18, 2022 at 11:26:51 AM UTC+7 Ian Lance Taylor wrote: >>>> >>>>> On Thu, Mar 17, 2022 at 7:17 PM Zhaoxun Yan <yan.z...@gmail.com> >>>>> wrote: >>>>> > >>>>> > I just came across this taboo in golang - new methods cannot be >>>>> added to an existing type: >>>>> >>>>> Yes. If we didn't have this prohibition, then the set of interfaces >>>>> satisfied by a type would depend on which package was using the type. >>>>> >>>>> See the discussion at https://go.dev/issue/21401. >>>>> >>>>> Ian >>>>> >>>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/18613c1d-adf6-4a35-bf00-005b3df798den%40googlegroups.com.