On Sun, Aug 20, 2017 at 4:08 PM, Tong Sun <suntong...@gmail.com> wrote:

> The
>
> fmt.Println(unmarshal(`{"foo": 3}`))
>
> prints a pointer instead of 3.
>

Yes, it is a pointer to an integer holding the value 3. If you want it to
format differently, implement fmt.Stringer.


>
> This is NOT what I'm asking for, despite what you think.
>

I am aware. The difference is - again - one of syntax, which I described as
"a very marginal benefit, at best".


> I think any further explanation is pointless, since you disagree from the
> very first. It'll be fruitless trying to make you look from other's view.
>
> All I'm trying to do is to make a point. So far it is *inconvenient*, to
> deal with the situation I've described. Think of dealing with a json string
> of several meg, which full of nullable ints. It is doable, but your "*int"
> is not the solution.
>

How, specifically, is "int?" better? Again, describe the semantics of what
you are actually *suggesting*. From what I can tell, the two are
mechanically and bijectively translatable into each other. Looking at this
example:
https://stackoverflow.com/questions/2690866/what-is-the-purpose-of-a-question-mark-after-a-type-for-example-int-myvariabl

You'd write that in go as

var num *int

// Is the HasValue property true?
if num != nil {
      fmt.Println("num = " + *num)
} else {
      fmt.Println("num = Nil");
}

// y is set to zero
var y int
if num != nil {
    y = *num
}

// num.Value throws an InvalidOperationException if num.HasValue is false
defer func() {
    if v := recover(); v != nil {
        fmt.Println("panic:", v)
    }
}()
y = *num

Yes, there obviously is a difference. But it is a very minor one.


> This is the end of the discussion.
>

What discussion? You seem to refuse to answer even the simplest questions
about your proposal, like "what's the difference to using pointers?".


> And I'm only asking for consideration in my OP.
>

>
>
> On Sun, Aug 20, 2017 at 9:45 AM, Axel Wagner <
> axel.wagner...@googlemail.com> wrote:
>
>> On Sun, Aug 20, 2017 at 3:21 PM, Tong Sun <suntong...@gmail.com> wrote:
>>
>>> On Sun, Aug 20, 2017 at 2:22 AM, Axel Wagner <
>>> axel.wagner...@googlemail.com> wrote:
>>>
>>> ii := new(int)
>>>> (*ii) = 3
>>>> (*ii)++
>>>>
>>>> Yes, it's not exactly the same syntax. It still demonstrates that what
>>>> you are suggesting creates, at best, very marginal benefit.
>>>>
>>>
>>> This is where I don't agree on.
>>>
>>> var ii *int
>>>>
>>>
>>> This is what you are suggesting, how to define the variable. I.e., *to
>>> replace "int?"*.
>>>
>>
>> Again, what you write as "int?", you write as "*int" instead. What you
>> describe as "int?" is a type, that can either contain an int, or nothing.
>> That is exactly what pointers do; they are either nil, or contain a
>> reference to an int.
>>
>>
>>>
>>> ii = 3
>>>>
>>>
>>> This is what I believe what will happen if I parse json '{"ii", 3}' into
>>> it,
>>>
>>
>> The semantics of particular packages is what they choose. In the case of
>> encoding/json, it does what you want: https://play.golang.org/
>> p/3XIimrd6RF
>>
>> or read 3 from DB into it.
>>>
>>
>> I don't know how database/sql behaves in this matter. I suspect to a
>> degree that depends on the driver. In any case, this is a library-problem,
>> not a language problem.
>>
>>
>>> If not, then you didn't do a good job explaining your point.
>>>
>>
>> You made a suggestion for a language change. I believe it is fair to put
>> the onus of explanation on you here. Both of what the expected benefits of
>> your proposal are and why the current semantics aren't enough.
>>
>> ii++
>>>
>>>
>>> This demonstrate how I can deal with a "int?" variable in C#.
>>>
>>
>> And I demonstrated how you can deal with a "*int" variable in Go in
>> exactly the same manner. I demonstrated that your suggestion seems to be
>> exactly that: That you want to write "ii++" instead of writing "(*ii)++". I
>> summarized that as "a very marginal benefit at best".
>>
>>
>>> So, all in all, you are either shooting without fully understand what I
>>> am asking, or don't understand what "int?" actually means in C#, or both.
>>>
>>
>> Then explain better what you are asking for. I indeed don't know C#. But
>> I understand the ?-operator to be the equivalent of Maybe<T> in Haskell or
>> Option<T> in rust, the semantics of both I described above. Pointers are
>> providing the corresponding semantics for Go.
>>
>>
>>>
>>>
>>>> On Sun, Aug 20, 2017 at 8:00 AM, Tong Sun <suntong...@gmail.com> wrote:
>>>>
>>>>> <sigh> I did. why there are always people assuming the other party
>>>>> they are talking to is just silly. <sigh>
>>>>>
>>>>> Anyway, this is what i got:
>>>>>
>>>>> var ii *int
>>>>> ii = 3
>>>>> ii++
>>>>>
>>>>> cannot use 3 (type int) as type *int in assignment
>>>>>
>>>>> invalid operation: ii++ (non-numeric type *int)
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Aug 20, 2017 at 1:24 AM, Tyler Compton <xavi...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I don't think it's immediately obvious what use cases this "int?"
>>>>>> proposal delivers that aren't covered by "*int". The encoding/json 
>>>>>> package
>>>>>> uses pointers to support null JSON values.
>>>>>>
>>>>>> As a more general point, when someone answers your question, they're
>>>>>> taking time out of their day to help you. I think it's reasonable for the
>>>>>> burden of proof to be put upon the asker, who is looking to others for 
>>>>>> help.
>>>>>>
>>>>>> On Sat, Aug 19, 2017 at 9:28 PM Tong Sun <suntong...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Oh yeah? Are you sure what you are answering is what I'm asking?
>>>>>>>
>>>>>>> Please try to understand what people are asking before showing off
>>>>>>> yourself, or post concrete example to proof that you understand 
>>>>>>> correctly
>>>>>>> what people are asking.
>>>>>>>
>>>>>>> On Sat, Aug 19, 2017 at 4:02 PM, Axel Wagner <
>>>>>>> axel.wagner...@googlemail.com> wrote:
>>>>>>>
>>>>>>>> Go can do what you want today, just that it's spelled "*int".
>>>>>>>>
>>>>>>>> On Sat, Aug 19, 2017 at 6:01 PM, Tong Sun <suntong...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> - "int?" will be a different type than "int". I.e., we know very
>>>>>>>>> well what we are sacrificing when we choose that type.
>>>>>>>>> - There is a demand there, json and/or sql. Denying it won't make
>>>>>>>>> it go away.
>>>>>>>>>
>>>>>>>>> (*Sorry to Jan, was sending to the wrong place*)
>>>>>>>>>
>>>>>>>>> On Sat, Aug 19, 2017 at 11:54 AM, Jan Mercl <0xj...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> On Sat, Aug 19, 2017 at 5:05 PM Tong Sun <suntong...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> > Suggesting C# type syntax like "int?" so as to take nil as
>>>>>>>>>> valid value.
>>>>>>>>>>
>>>>>>>>>> - As int is not a pointer type, what would nil int mean?
>>>>>>>>>>
>>>>>>>>>> - Are you willing to sacrifice extra storage for the additional
>>>>>>>>>> isNil information or do you prefer that int cannot represent
>>>>>>>>>> 2^(sizeof(int)*8) different values?
>>>>>>>>>>
>>>>>>>>>> - (xyproblem?) If you need the information like 'isValid', why a
>>>>>>>>>> separate bool [field] is not enough?
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> -j
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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.
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> --
>>>>>>> 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.
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to