|
@@ -0,0 +1,61 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+)
|
|
|
+
|
|
|
+type Person struct {
|
|
|
+ Id int
|
|
|
+ Name string
|
|
|
+}
|
|
|
+
|
|
|
+// не изменяет оригинальной структуры, для которой вызван
|
|
|
+func (p Person) UpdateName(name string) {
|
|
|
+ p.Name = name
|
|
|
+}
|
|
|
+
|
|
|
+// изменяет оригинальную структуру
|
|
|
+func (p *Person) SetName(name string) {
|
|
|
+ p.Name = name
|
|
|
+}
|
|
|
+
|
|
|
+type Account struct {
|
|
|
+ Id int
|
|
|
+ Name string
|
|
|
+ Person
|
|
|
+}
|
|
|
+
|
|
|
+type MySlice []int
|
|
|
+
|
|
|
+func (sl *MySlice) Add(val int) {
|
|
|
+ *sl = append(*sl, val)
|
|
|
+}
|
|
|
+
|
|
|
+func (sl *MySlice) Count() int {
|
|
|
+ return len(*sl)
|
|
|
+}
|
|
|
+
|
|
|
+func main() {
|
|
|
+ /*
|
|
|
+ pers := Person{1, "Vasily"}
|
|
|
+ fmt.Println(pers.Name)
|
|
|
+ pers.SetName("Vasily Romanov")
|
|
|
+ fmt.Println(pers.Name)
|
|
|
+ */
|
|
|
+ var acc Account = Account{
|
|
|
+ Id: 1,
|
|
|
+ Name: "rvasily",
|
|
|
+ Person: Person{
|
|
|
+ Id: 2,
|
|
|
+ Name: "Vasily Romanov",
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ acc.SetName("romanov.vasily")
|
|
|
+ fmt.Println(acc.Name)
|
|
|
+ fmt.Println(acc.Person.Name)
|
|
|
+
|
|
|
+ sl := MySlice([]int{1, 2})
|
|
|
+ sl.Add(3)
|
|
|
+ fmt.Println(sl.Count(), sl)
|
|
|
+}
|