No, the function does return two variables, as I take out "er" from "out,
err:="
go vet report a flaw:
/util.go:51:9: cannot initialize 1 variables with 2 values

On Tue, Jun 10, 2025 at 10:28 AM Robert Engels <reng...@ix.netcom.com>
wrote:

> Just use VSCode with the standard Go plugin.
>
> On Jun 9, 2025, at 9:23 PM, Kurtis Rader <kra...@skepticism.us> wrote:
>
> 
> On Mon, Jun 9, 2025 at 7:01 PM Zhaoxun Yan <yan.zhao...@gmail.com> wrote:
>
>> Oh! Thank you Kurtis. So do you have a special Editor to inform you about
>> the functions? My current editor cannot even tell what type of variable a
>> go function would return, let alone parameter hints, etc.
>>
>
> I use a VIM plugin that talks to the
> https://pkg.go.dev/golang.org/x/tools/gopls tool. That makes it easy to
> jump to the definition of a function or other symbol and find all the
> places that use it. It is likely your editor can be configured to interact
> with that tool.
>
>
>> On Mon, Jun 9, 2025 at 1:50 PM Kurtis Rader <kra...@skepticism.us> wrote:
>>
>>>
>>> On Sun, Jun 8, 2025 at 9:35 PM Zhaoxun Yan <yan.zhao...@gmail.com>
>>> wrote:
>>>
>>>> it turned out to be an error misjudgement. The real line that caused
>>>> trouble is this:
>>>> s = er.Error()+string(out)
>>>> The error is gone after I changed it to this line :
>>>> s = fmt.Sprintf("%v %s", er, out)
>>>>
>>>
>>> The stdlib os.exec.Command()
>>> <https://pkg.go.dev/os/exec@go1.24.4#Command>function only returns a
>>> single value. Which should result in a compiler error since your program
>>> expects two values. I'm going to guess that you are calling a different
>>> function with that name which can return two values and the "er" return
>>> value can be nil. Which would result in the "er.Error()" call to
>>> dereference a nil value. So I think you have incorrectly diagnosed the
>>> cause of the problem. The first statement does not correctly handle "er"
>>> being nil. The "fmt.Sprintf()" correctly handles "er" being the nil value.
>>>
>>>
>>>> On Fri, Jun 6, 2025 at 6:29 PM Zhaoxun Yan <yan.zhao...@gmail.com>
>>>> wrote:
>>>>
>>>>> --------------------
>>>>> panic: runtime error: invalid memory address or nil pointer dereference
>>>>> [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x6646f2]
>>>>>
>>>>> goroutine 1 [running]:
>>>>> util.CommandArgs({0xc000093cb0?, 0x2?, 0xc000071380?})
>>>>>         /home/zxun/src/util/util.go:49 +0xf2
>>>>> --------------------
>>>>> This error occurred because package [main] uses a function called
>>>>> "CommandArgs" from my self-built package [util] with args in another
>>>>> package [conf] in the same directory. Package [util] got lost because it
>>>>> does not know where is package [conf]
>>>>> like this
>>>>> [util] /home/zxun/src/util.go
>>>>> [conf] /home/zxun/src/conf.go
>>>>> [main] /home/zxun/src/main.go...
>>>>> /home/zxun/src/go.mod:
>>>>>
>>>>> require(
>>>>>   util v0.0.0
>>>>>   ...
>>>>> replace util => ../util
>>>>>
>>>>> The usage line in main.go:
>>>>> fmt.Println( util.CommandArgs([]string{conf.IreportExec,
>>>>> conf.IreportScript, "redis"}) )
>>>>>
>>>>> util.CommandArgs:
>>>>>
>>>>> func CommandArgs(args []string) string{
>>>>>   if len(args) ==0{
>>>>>     return "args are empty!"
>>>>>   }
>>>>>   var s string
>>>>>   if len(args) ==1{
>>>>>     out, er := exec.Command(args[0]).CombinedOutput()
>>>>>     s = er.Error()+string(out)
>>>>>   }else{
>>>>>     out, er := exec.Command(args[0],args[1:]...).CombinedOutput()
>>>>>     s = er.Error()+string(out)
>>>>>     fmt.Println(s)
>>>>>   }
>>>>>   return s
>>>>> }
>>>>>
>>>>> So is my analysis correct? I have not seen s printed yet, because s
>>>>> shall include "<nil>" at the beginning. I am using go1.18. If the cause is
>>>>> util package cannot access a variable in conf, is it possible to walk
>>>>> around by a deepcopy of the string array (which will be in package main)?
>>>>>
>>>>> Thanks in advance.
>>>>>
>>>> --
>>>> 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 visit
>>>> https://groups.google.com/d/msgid/golang-nuts/CADEX6_Wzy%3DPoqdXBNUqQ0tGYmQfacTq6A%2By58a5osDkKB-Z1yA%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/golang-nuts/CADEX6_Wzy%3DPoqdXBNUqQ0tGYmQfacTq6A%2By58a5osDkKB-Z1yA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>
>>>
>>> --
>>> Kurtis Rader
>>> Caretaker of the exceptional canines Junior and Hank
>>>
>>
>
> --
> Kurtis Rader
> Caretaker of the exceptional canines Junior and Hank
>
> --
> 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 visit
> https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD-_MxcMch21H-UhOX_N8Wf2A-8Gtb-WJ1DXqkh5YBAEGQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD-_MxcMch21H-UhOX_N8Wf2A-8Gtb-WJ1DXqkh5YBAEGQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>

-- 
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 visit 
https://groups.google.com/d/msgid/golang-nuts/CADEX6_W9Ez3N2mEoXqHi_r-G_b91wbD1Hq%2BviHMQ5ajn%3DwgLoQ%40mail.gmail.com.

Reply via email to