I have encountered the same discussion in the past at 
https://groups.google.com/g/golang-nuts/c/jP_5kSTmSy4

Em sábado, 12 de outubro de 2024 às 00:35:08 UTC-3, Cleberson Pedreira 
Pauluci escreveu:

> I agree with @robert.
> The compiler cannot guarantee that the function will always return a 
> value. Even though we can see that the loop will eventually *return i* 
> value, the compiler isn't able to make this determination statically.
>
> Compile doesn't complain about the following code. I'm no expert, but I 
> think this is strictly compiler behavior:
> func myfunc() int {
>     for i := 0; ; i++ {
>         if i > 8 {
>             return i
>         }
>     }
> }
>
> But the following code will not compile.
> func myfunc() int {
>     for i := 0; i <= 9; i++ {
>         if i > 8 {
>             return i
>         }
>     }
> }
>
> To fix that (for didactic purposes only), we can add a return statement 
> after the loop (which will never be reached, but satisfies the compiler):
> func myfunc() int {
>     for i := 0; true; i++ {
>         if i > 8 {
>             return i
>         }
>     }
>     return 0 // This line is unreachable but satisfies the compiler
> }
>
> If anyone knows more about this behavior, I would be happy to learn more.
>
> Cleberson
>
> Em sexta-feira, 11 de outubro de 2024 às 19:34:46 UTC-3, Ian Lance Taylor 
> escreveu:
>
>> On Fri, Oct 11, 2024 at 3:07 PM robert engels <ren...@ix.netcom.com> 
>> wrote: 
>> > 
>> > true is an expression, the compiler doesn’t inspect that it is a 
>> constant expression, thus you need the return statement 
>>
>> The exact rules can be seen at 
>> https://go.dev/ref/spec#Terminating_statements. 
>>
>> Ian 
>>
>>
>>
>> > > On Oct 11, 2024, at 4:57 PM, Pierpaolo Bernardi <olop...@gmail.com> 
>> wrote: 
>> > > 
>> > > Hello, 
>> > > 
>> > > the following code works as I expect: 
>> https://go.dev/play/p/pjKqpZyTU0d 
>> > > 
>> > > However, if I change line 15 from 
>> > > 
>> > > for i := 0; ; i++ { 
>> > > 
>> > > to 
>> > > 
>> > > for i := 0; true; i++ { 
>> > > 
>> > > it does not compile. In my understanding the two should be 
>> equivalent, 
>> > > but they are not. Maybe I'm missing a simple explanation? 
>> > > 
>> > > -- 
>> > > 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...@googlegroups.com. 
>> > > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/CANY8u7F3pV_FX3jQHRz%2BOpmrPN0qb6-2-NAwzQYNRe9Qq18D8A%40mail.gmail.com.
>>  
>>
>> > 
>> > -- 
>> > 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...@googlegroups.com. 
>> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/0E9E12CB-EF17-4977-BA5A-07704C01DAB9%40ix.netcom.com.
>>  
>>
>>
>

-- 
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/3567ea53-6b71-4092-8408-ad522fbacd3dn%40googlegroups.com.

Reply via email to