Shyaka, The list package does all operation on list pointer. In your case, I think you are passing list object instead of pointer.
You have defined your structure as:- type Persons struct { name string Names list.List <<<<<<<<<<<<< Its a list object and not a pointer to list object. } Then you assign a list object to it. p := &Persons{ name: "", Names: *list.New(), } All your operations are on Names list object & due to that its not getting passed as reference to PushBack & you don't see desired result. The fix would be to make your list a pointer. type Persons struct { name string Names *list.List<--------------------- Make it a pointer. } func main() { p := &Persons{ name: "", Names: list.New(), <------------- Create a new list } With these two changes its working as expected. On Sat, Aug 29, 2020 at 2:01 PM burak serdar <bser...@computer.org> wrote: > On Sat, Aug 29, 2020 at 2:01 PM Shyaka <renek...@gmail.com> wrote: > > > > Hello, I need help, I have a struct Person wiith list inside, I add 5 > string on list at the end I found that the list is nil, I don't know whre > is the error, any help is appreciated. > > > > package main > > > > import ( > > "container/list" > > "fmt" > > ) > > > > type Persons struct { > > name string > > Names list.List > > } > > > > func main() { > > > > p := &Persons{ > > name: "", > > Names: *list.New(), > > } > > Your program doesn't work because of the above line. list.New() > creates a new list containing the head/tail pointers within an Element > instance, both pointing to the list created by list.New() by > reference. They do not point to p.Names. When you add elements, those > are added to the list returned by list.New(), not to Person.Names, but > the size of Person.Names is incremented with each addition. > > Do not use list.New(), leave the Names uninitialized. It will > initialize correctly the first time you add an element to it. > > > > p.setName("John Peter") > > p.add("one") > > p.add("two") > > p.add("three") > > p.add("four") > > p.add("five") > > p.display() > > > > } > > > > func (p *Persons) setName(name string) { > > p.name = name > > } > > func (p *Persons) add(name string) { > > p.Names.PushBack(name) > > } > > func (p *Persons) display() { > > fmt.Println(p.name) > > for e := p.Names.Front(); e != nil; e = e.Next() { > > fmt.Println(e.Value) > > } > > } > > > > -- > > 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/e8975da6-9af2-4660-8dbb-1a7e7e9b67cfn%40googlegroups.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/CAMV2RqrH6v3wXMN1bw%3D2stUqfMTjB%2B%2BDmaQGYaV6OFw22af%2B_g%40mail.gmail.com > . > -- -Siddhesh. -- 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/CAMjfk%2Bj_Td7y%2BRnPLBZ-%3DUFHfsNYndvn-g_TQQWYysheJk_6cQ%40mail.gmail.com.