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

The answer lies exactly in your reply -- see how inconvenient it is
currently, just to deal with a single variable, whereas, what I'm dealing
with is,

Think of dealing with a json string of several meg, which full of nullable
ints.

Moreover,


*In C#, just by adding a "?" to the end of the type solves the problem. *

The difference is, once again, as I put in my OP: *it is** causing
tremendous problems for me so far, as I have to jump over the hoops to deal
with them. *
*In C#, just by adding a "?" to the end of the type solves the problem. *

I.e. it's all above convenient. I've repeated myself several times now, and
I don't care if you get it or not any more. That's why

This is the end of the discussion


On Sun, Aug 20, 2017 at 10:21 AM, Axel Wagner <axel.wagner...@googlemail.com
> wrote:

> 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